Java集合类
集合类是Java数据结构的实现类,Java的集合类是java.util包中的重要内容,它允许以各种方式将元素分组,并定义了各种使这些元素更容易操作的方法。Java集合类是Java将一些基本的和使用频率极高的基础类进行封装和增强后再以一个类的形式提供。集合类是可以往里面保存多个对象的类,存放的是对象,不同的集合类有不同的功能和特点,适合不同的场合,用以解决一些实际问题。
集合的分类
1. Collection 包含了集合的基本操作和抽象接口
1.1 List
是一个有序的队列, 插入顺序 实现类有4个:LinkedList, ArrayList, Vector, Stack。
ArrayList 优点: 查询快 缺点:插入删除慢 线程不安全
LinkedList 双向链表形式 插入删除快 查询慢 线程不安全
Vector 线程安全 但性能比较慢 现在基本不用
1.2 Set
不能存在相同的对象,无序的,就是数学意义上的集合。具体实现类有HashSet,LinkedHashSet,TreeSet等
HashSet 无序 不能保证元素的顺序,元素不能重复。元素可以为null。底层是一个数组,但是元素的位置和元素的取值不存在确定的关系,而是将元素进行Hash运算之后的位置。这样做是为了增加查询的速度。index = hash(value)。不是线程安全
LinkedHashSet 插入顺序 不能重复
2. Map 一个映射接口,即key-value键值对
无序的 以键值对的形式存放对象。key-value。一般是key为String类型,value为Object的类型。具体实现类有HashMap,LinkedHashMap,TreeMap等。
3. Iterator 它是遍历集合的工具,即我们通常通过Iterator迭代器来遍历集合
对实体类的排序
1.让实体类实现Comparable接口
2.在compareTo方法里面对需要排序的元素进行比较
3.将实体类存入集合 并排序
public class Student implements Comparable<Student> {
private String name;
private String age;
private String score;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getScore() {
return score;
}
public void setScore(String score) {
this.score = score;
}
@Override
public int compareTo(Student o) {
// if ((Integer.parseInt(score) - Integer.parseInt(o.score)) > 0) {
// return -1;
// } else if ((Integer.parseInt(score) - Integer.parseInt(o.score)) <= 0) {
// return 1;
// }else{
// return 0;
// }
return this.name.compareTo(o.name);
}
}
Student student = new Student();
student.setName("张三");
student.setAge("24");
student.setScore("86");
Student student1 = new Student();
student1.setName("李四");
student1.setAge("28");
student1.setScore("72");
Student student2 = new Student();
student2.setName("王五");
student2.setAge("16");
student2.setScore("90");
Student student3 = new Student();
student3.setName("zl");
student3.setAge("18");
student3.setScore("76");
ArrayList<Student> list=new ArrayList<Student>();
list.add(student);
list.add(student1);
list.add(student2);
list.add(student3);
System.out.println("排序前===");
for (Student s1 : list) {
System.out.println(s1.getName());
}
System.out.println("排序后===");
Collections.sort(list);
for (Student s2 : list) {
System.out.println(s2.getName());
}
}