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:加入元素可排序使用。