25.Collections类:
Collections类是一个工具类,用来对集合进行操作,它主要是提供一些排序算法,包括随机排序、反相排序等。
Collections类提供了一些静态方法,实现了基于List容器的一些常用算法。
Collections的一些方法列表:
· void sort(List): 对List内的元素进行排序。
· void shuffle(List): 对List内的元素随机排序。
· void reverse(List): 对List内的元素进行逆序排列。
· void fill(List, Object): 用一个特定的对象重写List容器,它只是将同一个对象的引用复制到容器的每个位置,并且支对List有效。
· void copy(List dest, List src): 将src中的内容复制到destiny中。
· int binarySearch(List, Object): 用二分法返回其中List的位置。
下面是Collections的例子演示:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
public class CollectionsTest {
@SuppressWarnings({ "rawtypes", "unchecked" })
public static void main(String[] args) {
List list = new ArrayList();
// 实例化Student对象
Student stu1 = new Student(18, "zhao", 87);
Student stu2 = new Student(23, "qian", 80);
Student stu3 = new Student(26, "sun", 92);
Student stu4 = new Student(25, "li", 76);
// 将Student对象添加到List容器
list.add(stu1);
list.add(stu2);
list.add(stu3);
list.add(stu4);
System.out.println("初始化List的内容:");
printView(list);
Collections.shuffle(list);
System.out.println("随机排序后List的内容:");
printView(list);
Collections.sort(list);
System.out.println("排序后List的内容:");
printView(list);
Collections.reverse(list);
System.out.println("逆序后List的内容:");
printView(list);
/**
* 使用Collections类中的copy()方法时,一定要初始化dest所对应的List,并用对象填充。Arrays.lasList()方法的作用是将Object类
* 编译为List队象
*/
List newList = new ArrayList(Arrays.asList(new
Object[list.size()]));
Collections.copy(newList, list);
System.out.println("复制list的内容: ");
printView(newList);
}
//显示的方法
public static void printView(List<Object> arrayList) {
Iterator<Object> it = arrayList.iterator();
while (it.hasNext()) {
System.out.print(" " + it.next());
}
System.out.println();
}
}
Student类的代码:
<span style="font-family:Microsoft YaHei;"><span style="font-size:14px;">@SuppressWarnings("rawtypes")
public class Student implements Comparable {
// 声明属性
private Integer age;
private String name;
private Integer score;
// 构造函数……
// get、set方法……
//重写toString方法
public String toString() {
return "name = " + name + ", age = " + age + ", score " + score
+ "\n";
}
//重写compareTo方法
public int compareTo(Object o) {
Student s = (Student) o;
if (s.getScore().compareTo(score) > 0)
return -1;
else if (s.getScore().compareTo(score) < 0)
return 1;
else
return 0;
}
}
</span></span>
输出结果:
初始化List的内容:
name = zhao, age = 18, score 87
name = qian, age = 23, score 80
name = sun, age = 26, score 92
name = li, age = 25, score 76
随机排序后List的内容:
name = qian, age = 23, score 80
name = zhao, age = 18, score 87
name = li, age = 25, score 76
name = sun, age = 26, score 92
排序后List的内容:
name = li, age = 25, score 76
name = qian, age = 23, score 80
name = zhao, age = 18, score 87
name = sun, age = 26, score 92
逆序后List的内容:
name = sun, age = 26, score 92
name = zhao, age = 18, score 87
name = qian, age = 23, score 80
name = li, age = 25, score 76
复制list的内容:
name = sun, age = 26, score 92
name = zhao, age = 18, score 87
name = qian, age = 23, score 80
name = li, age = 25, score 76
容器选择的标准:
1>存放要求:
无序:Set,不能重复。
有序:List,允许重复。
“key-value”对:Map。
2>读写效率:
Hash: 读写、更改都很快。
Array: 读写快、更改慢。
Linked:读写慢、更改快。
Tree:加入元素可排序使用。