Java的Set类 Li.038

Set 无序 不可重复 import java.util.HashSet; public class Demo1_HashSet { public static void main(String[] args) { HashSet<String> hs = new HashSet<>(); boolean b1 = hs.add("a"); boolean b2 = hs.add("a"); System.out.println(hs); System.out.println(b1+" "+b2); for(String s:hs){ System.out.println(s); } } } HashSet 的重写hashCode() 方法, hashCode值一致时, 调用equals方法 使用HashSet 存取元素时, 这个元素必须重写 hashCode 和 equals方法 import lombok.Getter; import lombok.Setter; import java.util.Objects; public class Person { public Person(){} public Person(String name, int age){ this.name = name; this.age = age; } @Getter @Setter private String name; @Getter @Setter private int age; @Override public String toString(){ return "Person" + this....

August 22, 2021 · 6 分钟 · Lizicai

Java的List类 Li.037

List 练习Person 集合去重 @Data @AllArgsConstructor @NoArgsConstructor public class Person { private String name; private int age; @Override public boolean equals(Object obj) { Person p = (Person) obj; boolean d = false; if(this.getAge() == p.getAge() && this.getName() == p.getName()){ d = true; } else{ d = false; } return d; } } import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class Demo2_ArrayList { public static void main(String[] args) { List list = new ArrayList(); list....

August 20, 2021 · 5 分钟 · Lizicai

Java的Collection集合一 Li.036

Collection 和 数组区别 数组可以存储基本数据类型, 也可以存储引用数据类型 集合可以存储引用数据类型, 也能存基本数据类型, 存储时会自动装箱 数组的长度固定, 不可以自由增加 集合长度可变, 可以自由增加 List Set 集合 List 有序集合, 存取位置一致 有索引 可存储重复数据 Set 无序集合, 存取位置不一致 无索引 不可存储重复数据 List 体系 ArrayList LinkedList Vector ArrayList 底层是数组, 查询快, 增删慢 线程不安全, 效率高 LinkedList 链表实现, 查询慢, 增删快 线程不安全, 效率高 Vection 数组实现, 查询快, 增删慢 线程安全, 效率低 Set 体系 HashSet TreeSet HashSet 哈希算法 TreeSet 二叉树算法 ArrayList 的 boolean add(E e) 方法一直返回true, Set 集合存取重复元素时, 则返回false boolean remove(Object o) 一次删除一个对象 int size() 打印集合对象数 void clear() 清空集合 boolean isEmpty() 判断集合是否为空 public class Demo2_Collection { public static void main(String[] args) { Collection collection = new ArrayList(); boolean b1 = collection....

August 19, 2021 · 3 分钟 · Lizicai

Java的正则表达式 Li.035

Java 的正则表达式Regex java.util.regex.Pattern 有正则表达示例 /* [abc] a, b, or c (simple class) abc中任意一个字符 [^abc] Any character except a, b, or c (negation) 非abc的一个字符 [a-zA-Z] a through z or A through Z, inclusive (range) 匹配a-z A-Z 大小写字符 [a-d[m-p]] a through d, or m through p: [a-dm-p] (union) 匹配a-d 和 匹配 m-p 字符, 匹配则true [a-z&&[def]] d, e, or f (intersection) 匹配def 与 a-z的并集是 def [a-z&&[^bc]] a through z, except for b and c: [ad-z] (subtraction), 非bc 和 a-z取并集(匹配a d-z字符) [a-z&&[^m-p]] a through z, and not m through p: [a-lq-z](subtraction), 非m-p字符与a-z取并集, 并集是a-l和q-z */ private static void Demo7() { String regex = "[a-z&&[^m-p]]"; System....

August 16, 2021 · 8 分钟 · Lizicai

Java的StringBuffer类 Li.034

String 与 StringBuffer 区别 StringBuffer 是线程安全的可变字符序列 String 是一个不可变的字符序列 StringBuffer 的构造函数 public class Demo1_Sb { public static void main(String[] args) { StringBuffer sb = new StringBuffer(); System.out.println(sb.length()); System.out.println(sb.capacity()); StringBuffer sb2 = new StringBuffer(10); System.out.println(sb2.length()); System.out.println(sb2.capacity()); StringBuffer sb3 = new StringBuffer("hello"); System.out.println(sb3.length()); System.out.println(sb3.capacity()); } } StringBuffer 的append 和 insert 方法 StringBuffer append() 支持int String StringBuffer boolean, 返回本身, StringBuffer insert(int , String) 在指定索引添加int String char等, 返回本身, 有可能会越界 public class Demo2_Sb { public static void main(String[] args) { StringBuffer sb = new StringBuffer(); sb....

August 12, 2021 · 5 分钟 · Lizicai

Java的String类 Li.033

Scanner hasNext() 表示判断下一个输入项是否是字符串, hasNextInt() 表示判断下一个输入项是否是int, 否则返回false next()获取输入项的字符串, nextInt 获取项输入的int import java.util.Scanner; public class Demo1_Scanner { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); if( scanner.hasNextInt()) { int p = scanner.nextInt(); System.out.println(p); } else { System.out.println("输入内容不是int 数字"); } scanner.close(); } } 输入1个整数, 1个数字串, 输出数字和字符串, 错误示例 import java.util.Scanner; public class Demo2_Scanner { public static void main(String[] args) { // 输入1个整数, 1个字符串的 错误示例 Scanner sc = new Scanner(System.in); int i = sc....

August 10, 2021 · 5 分钟 · Lizicai

Java重写equals方法 Li.032

未重写前equals是比较引用的地址, 如比较2个对象, 地址一定是不同的 重写后, 可以比较对象的属性相同, 则认为对象相同 public class Demo1_Object { private int age; private String name; Demo1_Object(){} Demo1_Object(int age,String name){ this.age = age; this.name = name; } public static void main(String[] args) { Demo1_Object d = new Demo1_Object(12, "xiaoming"); Demo1_Object d2 = new Demo1_Object(12, "xiaohong"); Demo1_Object d3 = new Demo1_Object(12, "xiaoming"); System.out.println(d.equals(d2)); System.out.println(d.equals(d3)); } public boolean equals(Object obj){ // 重写Object 类中equals方法 if( obj instanceof Demo1_Object ){ Demo1_Object demo = (Demo1_Object)obj; return this....

August 10, 2021 · 1 分钟 · Lizicai

Java面向对象 Li.031

Package 包只能类的首行 com.lizica.java 默认编译是不会创建包的文件夹, 加入参数 -d .才会创建 运行类的方式就变了, 必须带上包的路径才的运行类 javac -d . Demo1_Package.java java com.lizicai.java.Demo1_Package package com.lizicai.java; public class Demo1_Package { public static void main(String[] args) { System.out.println("hello"); } } 引用时候3种方式, 推荐导入具体的类,第2种 class Demo2_Package{ public static void main(String[] args) { com.lizicai.java.Demo1_Package d = new com.lizicai.java.Demo1_Package(); d.sprint(); } } import com.lizicai.java.Demo1_Package; class Demo2_Package{ public static void main(String[] args) { Demo1_Package d = new Demo1_Package(); d.sprint(); } } import com.lizicai.java.*; class Demo2_Package{ public static void main(String[] args) { Demo1_Package d = new Demo1_Package(); d....

August 6, 2021 · 4 分钟 · Lizicai