vector自java1.2后被ArrayList取代
Collection中公用的方法
Collections集合工具类
- sort(List list)
import java.util.ArrayList;
import java.util.Collections;
public class DemoCollection {
public static void main(String[] args) {
ArrayList<Person> list = new ArrayList<>();
list.add(new Person(18,"aaa"));
list.add(new Person(20,"bbb"));
list.add(new Person(15,"ccc"));
list.add(new Person(10,"ddd"));
Collections.sort(list);
System.out.println(list);
}
}
class Person implements Comparable<Person> {
int age;
String name;
public Person(int age, String name) {
this.age = age;
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Person{" +
"age=" + age +
", name='" + name + '\'' +
'}';
}
/*
sort使用前提:
被排序的集合里存储的元素,必须实现Comparable,重写接口中方法conpareTo定义排序规则
排序规则:this.参数-o.参数(升序);o.参数-this.参数(降序)
*/
@Override
public int compareTo(Person o) {
return this.getAge()-o.getAge(); //按年龄升序排序
}
}
- sort(List list, Comparator<? super T>)
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
public class DemoCollection {
public static void main(String[] args) {
ArrayList<Person> list = new ArrayList<>();
list.add(new Person(18,"aaa"));
list.add(new Person(20,"bbb"));
list.add(new Person(15,"ccc"));
list.add(new Person(10,"ddd"));
Collections.sort(list, new Comparator<Person>(){ //匿名内部类
//alt + enter
@Override
public int compare(Person o1, Person o2) {
//按照年龄升序
int result = o1.getAge() - o2.getAge();
//如果年龄相同,按姓名第一个字排序
if(result == 0){
result = o1.getName().charAt(0) - o2.getName().charAt(0);
}
return result;
}
});
System.out.println(list);
}
}
class Person {
private int age;
private String name;
public Person(int age, String name) {
this.age = age;
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Person{" +
"age=" + age +
", name='" + name + '\'' +
'}';
}
}
List集合
LinkList
LinkList集合特点:
1.底层是链表结构,查询慢,增删快
2.里面包含大量操作首尾元素的方法
注意:使用LinkList集合特有的方法,不能使用多态
push()等效于addFirst()
pop()等效于removeFirst()
addLast()等效于父类中的add()
Set集合
哈希表
HashSet
由于需要保证同样元素只能存储一次,而判断元素相同是默认调用了哈希值和equals函数来判断的,所以当我们自定义类之后,一定要覆盖重写equals函数和HashCode函数。快捷键:alt + insert
LinkedHashSet
所有方法与HashSet一致,唯一区别在于用LinkedHashSet存储的元素是有序的。