Collections 类是java 提供的一个集合操作工具类,
它包含大量的静态方法,用于实现对集合元素的排序、查找和替换等操作。类似数值的Arrays类,
与Collection 是不同的,Collections是集合的操作类,Collection 是集合接口
1、对集合元素排序与查找,替换
如果要实现一个类的对象进行整体排序,这个类要实现Comparable 接口,此接口强行对实现它的每个类的对象进行整体排序,称为自然排序,
累的compareTo() 方法称为它的自然比较方法,用于比较此对象与指定对象的顺序,如果对象小于、等于或大于指定对象,分别返回负整数,零或正整数
int compareTo(Object obj) : 比较此对象比指定对象,小反负 整,等返 零,大返正整,参数obj 为要比较的指定对象
package com.obge.model; //目的实现元素之间可以比较大小 //实现 Comparable 接口 public class Student implements Comparable { private int number = 0; private String name = ""; private String gender=""; public Student() { } public Student(int number, String name, String gender) { this.number = number; this.name = name; this.gender = gender; } public int getNumber() { return number; } public void setNumber(int number) { this.number = number; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } //重写compareTO 方法 @Override public int compareTo(Object o) { Student student = (Student)o; //使用学号进行比较 if(this.number==student.number){ return 0; //如果这个学生的学号大于 传入学生的学号 }else if (this.number>student.number){ return 1; }else { return -1; } } }
元素之间可以比较大小后,才可以使用Collections 类的sort ()方法对元素进行排序。
List 接口是有序的,才可以进行排序,Map 接口不行哦
package com.obge.boge; import com.obge.model.Student; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; public class CollectionsStu { public static void main(String[] args) { Student student1 = new Student(); student1.setNumber(1); Student student2 = new Student(); student2.setNumber(7); Student student3 = new Student(); student3.setNumber(2); Student student4 = new Student(); student4.setNumber(11); // 弄个集合放student 对象 ArrayList arrayList = new ArrayList(); arrayList.add(student1); arrayList.add(student2); arrayList.add(student3); arrayList.add(student4); System.out.println("-------排序前---------"); Iterator iterator = arrayList.iterator(); while (iterator.hasNext()){ Student stu = (Student) iterator.next(); System.out.println(stu.getNumber()); } System.out.println("-------排序后---------"); //排序 Collections.sort(arrayList); //遍历 iterator = arrayList.iterator(); while (iterator.hasNext()){ Student stu = (Student) iterator.next(); System.out.println(stu.getNumber()); } //使用binarySearch 查找arrayList元素中某个元素对应索引 从0 开始,查找的是排序后的 System.out.println("student2的索引是:"+Collections.binarySearch(arrayList,student2)); //替换fill() 把集合中的所有元素替换为相同元素 Collections.fill(arrayList,student1); iterator = arrayList.iterator(); while (iterator.hasNext()){ Student stu = (Student) iterator.next(); System.out.println(stu.getNumber()); } } }