特点:
带索引方法:
注意:
操作索引的时候,一定要防止索引越界异常
特点:查询快,增删慢,每增加一个元素底层使用的是数组的拷贝,将数组整个拷贝所以增删慢
特点:
注意:使用LinkedList集合特有的方法,不能使用多态
方法:
特点:
特点:
特点:
注:
HashSet集合存储结构(哈希表)
HashSet存储自定义类型元素:必须重写hashcode和equals方法
Person类中重写hashcode和equals方法
1 package day01; 2 3 import java.util.Objects; 4 5 /** 6 * @author USTC_WZH 7 * @create 2019-12-29 22:02 8 */ 9 public class Person { 10 11 private String name; 12 private int age; 13 14 public Person(String name, int age) { 15 this.name = name; 16 this.age = age; 17 } 18 19 @Override 20 public boolean equals(Object o) { 21 if (this == o) return true; 22 if (o == null || getClass() != o.getClass()) return false; 23 Person person = (Person) o; 24 return age == person.age && 25 Objects.equals(name, person.name); 26 } 27 28 @Override 29 public int hashCode() { 30 return Objects.hash(name, age); 31 } 32 33 @Override 34 public String toString() { 35 return "Person{" + 36 "name=‘" + name + ‘\‘‘ + 37 ", age=" + age + 38 ‘}‘; 39 } 40 41 public String getName() { 42 return name; 43 } 44 45 public void setName(String name) { 46 this.name = name; 47 } 48 49 public int getAge() { 50 return age; 51 } 52 53 public void setAge(int age) { 54 this.age = age; 55 } 56 }
1 public class demo7 { 2 3 public static void main(String[] args) { 4 5 Person p1 = new Person("wzl",23); 6 Person p2 = new Person("wzl", 23); 7 Person p3 = new Person("wzh",24); 8 9 HashSet<Person> hashSet = new HashSet<>(); 10 hashSet.add(p1); 11 hashSet.add(p2); 12 hashSet.add(p3); 13 14 for (Person p :hashSet 15 ) { 16 System.out.println(p.getName() + ":" + p.getAge()); 17 } 18 } 19 }
特点:
1 public static void main(String[] args) { 2 HashSet<String> hashSet = new HashSet<>(); 3 4 hashSet.add("www"); 5 hashSet.add("abc"); 6 hashSet.add("test"); 7 8 System.out.println(hashSet); //[abc, test, www] 9 10 LinkedHashSet<String> linkedHashSet = new LinkedHashSet<>(); 11 12 linkedHashSet.add("www"); 13 linkedHashSet.add("abc"); 14 linkedHashSet.add("test"); 15 16 System.out.println(linkedHashSet); //[www, abc, test] 17 }
补充:
可变参数:
注意事项:
终极写法是传入参数为Object... objects
1 public class demo01 { 2 3 public static void printArray(int... arr) { 4 System.out.println("数组元素有:" + arr.length + "个"); 5 for (int i : arr 6 ) { 7 System.out.println(i); 8 } 9 } 10 11 public static void printAll(Object... objects) { 12 System.out.println("数组元素有:" + objects.length + "个"); 13 for (Object i : objects 14 ) { 15 System.out.println(i); 16 } 17 } 18 19 public static void main(String[] args) { 20 21 printArray(1, 2, 3, 4, 5, 6); 22 printAll(6,5,4,3,2,1); 23 } 24 }
定义在java.utils.Collections中
常用方法:
注意:
Person类:
1 package day02; 2 3 import java.util.Objects; 4 5 /** 6 * @author USTC_WZH 7 * @create 2019-12-29 22:02 8 */ 9 public class Person implements Comparable<Person>{ 10 11 private String name; 12 private int age; 13 14 public Person(String name, int age) { 15 this.name = name; 16 this.age = age; 17 } 18 19 @Override 20 public boolean equals(Object o) { 21 if (this == o) return true; 22 if (o == null || getClass() != o.getClass()) return false; 23 Person person = (Person) o; 24 return age == person.age && 25 Objects.equals(name, person.name); 26 } 27 28 @Override 29 public int hashCode() { 30 return Objects.hash(name, age); 31 } 32 33 @Override 34 public String toString() { 35 return "Person{" + 36 "name=‘" + name + ‘\‘‘ + 37 ", age=" + age + 38 ‘}‘; 39 } 40 41 public String getName() { 42 return name; 43 } 44 45 public void setName(String name) { 46 this.name = name; 47 } 48 49 public int getAge() { 50 return age; 51 } 52 53 public void setAge(int age) { 54 this.age = age; 55 } 56 57 @Override 58 public int compareTo(Person o) { 59 return o.getAge() - this.getAge(); //降序 60 } 61 }
1 public class demo02 { 2 3 public static void main(String[] args) { 4 5 ArrayList<String> arrayList = new ArrayList<>(); 6 7 //向集合中添加元素 8 Collections.addAll(arrayList, "bbb", "ccc", "aaa", "ddd"); 9 10 //原始顺序 11 System.out.println(arrayList); //[bbb, ccc, aaa, ddd] 12 13 //默认排序顺序(升序) 14 Collections.sort(arrayList); 15 System.out.println(arrayList); //[aaa, bbb, ccc, ddd] 16 17 //打乱顺序 18 Collections.shuffle(arrayList); 19 System.out.println(arrayList); //[ccc, bbb, ddd, aaa] 20 Collections.shuffle(arrayList); 21 System.out.println(arrayList); //[aaa, bbb, ddd, ccc] 22 23 ArrayList<Person> arr = new ArrayList<>(); 24 arr.add(new Person("wzl",23)); 25 arr.add(new Person("wxl",22)); 26 arr.add(new Person("wzh",24)); 27 arr.add(new Person("aaa", 24)); 28 29 30 //降序,使用定义在Person类中的重写方法compareTo 31 Collections.sort(arr); 32 System.out.println(arr); 33 34 //降序,使用函数式接口 35 Collections.sort(arr,Comparator.comparingInt(Person::getAge).reversed()); 36 System.out.println(arr); 37 38 //升序,使用Lambda表达式 39 Collections.sort(arr,(Person a,Person b)->{return a.getAge() - b.getAge();}); 40 System.out.println(arr); 41 42 //升序,使用函数式接口 43 Collections.sort(arr, Comparator.comparingInt(Person::getAge)); 44 System.out.println(arr); 45 46 //多个属性排序:年龄从大到小,姓名字典序排列 47 Collections.sort(arr,(Person a, Person b)->{ 48 49 //首先按照年龄降序 50 int result = b.getAge() - a.getAge(); 51 52 //如果年龄相等在按照姓名字典序排列 53 if(result == 0){ 54 result = a.getName().compareTo(b.getName()); 55 } 56 return result; 57 58 }); 59 System.out.println(arr); 60 61 } 62 }
原文:https://www.cnblogs.com/zhihaospace/p/12117170.html