欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java辅助工具类 java.util.Collections使用

程序员文章站 2022-06-28 17:13:15
工具类,顾名思义,就是辅助工具,类 java.util.Collections 提供了对Set、List、Map操作的工具方法。部分方法如下:void sort(List) //对List容器内的元素排序,排序的规则是按照升序进行排序。void shuffle(List) //对List容器内的元素进行随机排列void reverse(List) //对List容器内的元素进行逆续排列void fill(List, Object) //用一个特定的对象重写整个List容器int binar...

工具类,顾名思义,就是辅助工具,类 java.util.Collections 提供了对Set、List、Map操作的工具方法。

部分方法如下:

void sort(List) //对List容器内的元素排序,排序的规则是按照升序进行排序。
void shuffle(List) //对List容器内的元素进行随机排列
void reverse(List) //对List容器内的元素进行逆续排列
void fill(List, Object) //用一个特定的对象重写整个List容器
int binarySearch(List, Object)//对于顺序的List容器,采用折半查找的方法查找特定对象 

使用方法,代码如下:

List aList = new ArrayList();
for (int i = 0; i < 5; i++){
	aList.add("a" + i);
}
System.out.println(aList);
Collections.shuffle(aList); // 随机排列
System.out.println(aList);
Collections.reverse(aList); // 逆续
System.out.println(aList);
Collections.sort(aList); // 排序
System.out.println(aList);
System.out.println(Collections.binarySearch(aList, "a2"));
Collections.fill(aList, "hello");
System.out.println(aList);

Java辅助工具类 java.util.Collections使用

Comparable接口

问题来了,来了,上面的算法根据什么确定集合中对象的“大小”顺序?

其实所有可以“排序”的类都实现了 java.lang.Comparable 接口, Comparable 接口中只有一个方法

public int compareTo(Object obj)

返回0表示 this==obj

返回正数表示  this>obj

返回负数表示  this<obj

下面就由小编来带大家如何使用Comparable接口来重写属于自己定义类对象的排序方法。下面结果排序以年龄从小到大排序

 List<Student> list=new ArrayList<Student>();
	Student student1=new Student(15, "张三", 70.5);
	Student student2=new Student(19, "李四", 45.4);
	Student student3=new Student(16, "王五", 60.7);
	list.add(student1);
	list.add(student2);
	list.add(student3);
	Collections.sort(list);
	for (Student temp:list) {
		System.out.println(temp.toString());
	}

Student 类

public class Student implements Comparable<Student>{

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;
}
public double getWeight() {
	return weight;
}
public void setWeight(double weight) {
	this.weight = weight;
}

public Student(int age, String name, double weight) {
	super();
	this.age = age;
	this.name = name;
	this.weight = weight;
}

@Override
public String toString() {
	return "Student [age=" + age + ", name=" + name + ", weight=" + weight
			+ "]";
}
int age;
String name;
double weight;
@Override
public int compareTo(Student o) {
	//0=  -1 小    1大
	if (this.age==o.age) {
		return (this.weight==o.weight)?0:(this.weight>o.weight?1:-1);
	}else {
		return this.age>o.age?1:-1;
	}
}


} 

Java辅助工具类 java.util.Collections使用

关键点事重写Comparable接口提供的对比方法,只要观察基本类型的比较方法就能简单实现。

Comparator 接口

Comparator比较器,可以根据需要定制特定的比较规则,上面的比较只能实现一种比较规则,如果需要多种比较规则,通过实现Comparator接口,则可以轻松解决。废话不多说,直接上代码:

class A implements Comparator<Student>
{

	@Override
	public int compare(Student o1, Student o2) {
		// TODO Auto-generated method stub
		return o1.getAge()-o2.getAge();
	}
}

这个类实现了Comparator接口提供的compare方法。

 Comparator<Student>comparator =new A();
	Collections.sort(list, comparator);
	for (Student temp:list) {
		System.out.println(temp.toString());
	}

Java辅助工具类 java.util.Collections使用

或者又可以添加另外的规则,上代码:

 Collections.sort(list,new Comparator<Student>() {

		@Override
		public int compare(Student o1, Student o2) {
			// TODO Auto-generated method stub
			return (int) ((int)o1.getWeight()-o2.getWeight());
		}
	});

通过匿名方法简单实现了以体重从小到大排序。

Java辅助工具类 java.util.Collections使用

所有代码都已经上传,想要学习请自行下载(免费开源0积分)。

总结:工具类可以帮助我们快速的对容器进行各种操作。盛年不重来,一日难再晨。及时宜自勉,岁月不待人

本文地址:https://blog.csdn.net/qq_42121367/article/details/107899330