Collections类是一个工具类,用来对集合对象进行操作,提供对List、Map、Set等集合元素的排序、查询和修改等操作方法。
Collections类提供了一些静态方法,实现了基于List容器的一些常用算法,分别说明如下:
1、对List集合的排序操作
Collections类提供了对List集合元素进行排序、反转方法。
● void sort(List)
该方法用于对List内的元素排序。
● void shuffle(List)
该方法用于对List内的元素进行随机排序。
● void reverse(List)
该方法用于对List内的元素进行逆序排序。
案例1:建立UserInfoBean类,然后再建立UserInfoBeanTest1测试类。在UserInfoBeanTest1测试类实例化List集合并添加UserInfoBean对象,最后遍历输出List集合元素。
在PCoreUnit5项目新建operation包,在operation包下新建UserInfoBean类,并实现Comparable接口。代码如下:
package operation;
/**
* @ClassName: UserInfoBean
* @Description: 集合框架(集合操作Collections类)案例1
* @author 编程训练营
* @date
*
*/
public class UserInfoBean implements Comparable<UserInfoBean> {
private int id;
private String name;
private int age;
public UserInfoBean(int id, String name, int age) {
super();
this.id = id;
this.name = name;
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
// 重写父类(Object)的compareTo方法
@Override
public int compareTo(UserInfoBean o) {
// TODO Auto-generated method stub
if (this.id < o.id)
return -1;
else if (this.id > o.id)
return 1;
else
return 0;
}
// 重写父类(Object)的toString方法
@Override
public String toString() {
return "UserInfoBean [id=" + id + ", name=" + name + ", age=" + age + "]";
}
}在operation包下新建UserInfoBeanTest1测试类,并添加三个UserInfoBean对象。代码如下:
package operation;
import java.util.ArrayList;
import java.util.List;
/**
* @ClassName: UserInfoBeanTest1
* @Description: 集合框架(集合操作Collections类)案例1
* @author 编程训练营
* @date
*
*/
public class UserInfoBeanTest1 {
/**
* @Title: main
* @Description: Java程序入口main方法
* @param @param args 参数
* @return void 返回类型
* @throws
*/
public static void main(String[] args) {
List<UserInfoBean> userInfos = new ArrayList<UserInfoBean>();
userInfos.add(new UserInfoBean(2, "张三", 10));
userInfos.add(new UserInfoBean(1, "李四", 25));
userInfos.add(new UserInfoBean(3, "王五", 40));
for (int i = 0; i < userInfos.size(); i++)
{
System.out.println(userInfos.get(i).toString());
}
}
}程序执行结果如下图所示:
从上图输出结果可以看出,userInfos按照添加的顺序输出,我们希望userInfos能够按照UserInfoBean对象的id属性进行排序。
案例2:建立UserInfoBeanTest2测试类,在UserInfoBeanTest2测试类实例化List集合并添加UserInfoBean对象,通过Collections类对List按照升序排序,最后输出List集合元素。
在operation包下新建UserInfoBeanTest2类。代码如下:
package operation;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* @ClassName: UserInfoBeanTest2
* @Description: 集合框架(集合操作Collections类)案例2
* @author 编程训练营
* @date
*
*/
public class UserInfoBeanTest2 {
/**
* @Title: main
* @Description: Java程序入口main方法
* @param @param args 参数
*
* @return void 返回类型 @throws
*/
public static void main(String[] args) {
List<UserInfoBean> userInfos = new ArrayList<UserInfoBean>();
userInfos.add(new UserInfoBean(2, "张三", 10));
userInfos.add(new UserInfoBean(1, "李四", 25));
userInfos.add(new UserInfoBean(3, "王五", 40));
System.out.println("升序:");
// 调用Collections类的sort方法排序,sort方法是按升序排序
Collections.sort(userInfos);
// 遍历输出List集合元素
for (int i = 0; i < userInfos.size(); i++) {
System.out.println(userInfos.get(i).toString());
}
}
}在案例2代码添加了排序代码,调用Collections类的sort方法对userInfos按照升序排序(sort方法是按升序排序),因为Collections类提供的都是静态方法,因此可以不用实例化,而通过类名直接调用sort方法。
程序执行结果如下图所示:

从上图输出结果可以看出,userInfos按照UserInfoBean对象的id属性值升序输出。
案例3:建立UserInfoBeanTest3测试类,在UserInfoBeanTest3测试类实例化List集合并添加UserInfoBean对象,通过Collections类对List按照降序排序,最后输出List集合元素。
在UserInfoBeanTest3类添加排序代码,按照降序对userInfos排序,如果需要降序输出,则可以调用Collections类的sort方法后,再调用Collections类的reverse方法反转userInfos的元素。
在operation包下新建UserInfoBeanTest3类。代码如下:
package operation;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* @ClassName: UserInfoBeanTest3
* @Description: 集合框架(集合操作Collections类)案例3
* @author 编程训练营
* @date
*
*/
public class UserInfoBeanTest3 {
/**
* @Title: main
* @Description: Java程序入口main方法
* @param @param args 参数
* @return void 返回类型
* @throws
*/
public static void main(String[] args) {
List<UserInfoBean> userInfos = new ArrayList<UserInfoBean>();
userInfos.add(new UserInfoBean(2, "张三", 10));
userInfos.add(new UserInfoBean(1, "李四", 25));
userInfos.add(new UserInfoBean(3, "王五", 40));
System.out.println("降序:");
// 调用Collections类的sort方法排序,sort方法是按升序排序
Collections.sort(userInfos);
// 反转userInfos,实现降序排序
Collections.reverse(userInfos);
// 遍历输出List集合元素
for (int i = 0; i < userInfos.size(); i++) {
System.out.println(userInfos.get(i).toString());
}
}
}案例3代码在Collections类的sort方法后面,又调用了Collections类的reverse方法,反转userInfos,实现降序排序。
程序执行结果如下图所示:

2、对List集合元素的查找操作
Collections类提供了对集合元素进行二分查找、求最大值和最小值的方法。
● void max (List)
该方法用于找出List集合的最大元素。
● void min(List)
该方法用于找出List集合的最小元素。
● void binarySearch(List,Object)
该方法应用二分查找法返回元素在List中的位置。
案例4:建立UserInfoBeanTest4测试类,在UserInfoBeanTest3测试类实例化List集合并添加UserInfoBean对象,通过Collections类实现对集合元素的查找、求最大值和最小值操作。
在operation包下新建UserInfoBeanTest4类。代码如下:
package operation;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* @ClassName: UserInfoBeanTest4
* @Description: 集合框架(集合操作Collections类)案例4
* @author 编程训练营
* @date
*
*/
public class UserInfoBeanTest4 {
/**
* @Title: main
* @Description: Java程序入口main方法
* @param @param args 参数
* @return void 返回类型
* @throws
*/
public static void main(String[] args) {
List<UserInfoBean> userInfos = new ArrayList<UserInfoBean>();
userInfos.add(new UserInfoBean(2, "张三", 10));
userInfos.add(new UserInfoBean(1, "李四", 25));
userInfos.add(new UserInfoBean(3, "王五", 40));
// 添加排序代码
System.out.println("升序:");
Collections.sort(userInfos);
for (int i = 0; i < userInfos.size(); i++)
{
System.out.println(userInfos.get(i).toString());
}
//求最大值
UserInfoBean userInfo_max = Collections.max(userInfos);
System.out.println("最大值为:" + userInfo_max);
//求最小值
UserInfoBean userInfo_min = Collections.min(userInfos);
System.out.println("最小值为:" + userInfo_min);
//二分查找
UserInfoBean tempUserInfo = new UserInfoBean(2, "张三", 10);
int index = Collections.binarySearch(userInfos, tempUserInfo);
System.out.println("查找到索引位置" + index);
}
}案例程序分别调用Collections的max、min方法找出userInfos集合中的最大和最小元素,调用binarySearch方法查找tempUserInfo对象是否在userInfos集合中有相同的元素。注意,在调用binarySearch方法之前,一定要先对userInfos排序,否则查找结果不正确。
程序执行结果如下图所示:

3、List集合元素的复制操作
Collections类提供了对集合的复制操作,可以将原集合中的内容复制到新的集合中。
● void copy (List dest, List src)
该方法将src的内容复制到dest中。
复制方法应用非常简单,其用法可以参考前面的调用方法代码,在这里就不给出示例代码了。
Collection类是应用工具类,在集合操作中应用非常广泛。当程序需要对集合进行排序、复制、查找等操作时,可以使用Collection类完成对集合的操作。