Java学习笔记_25_Collections类

2014-11-23 19:24:49 · 作者: · 浏览: 12

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 arrayList) {
		Iterator it = arrayList.iterator(); while (it.hasNext()) { System.out.print(" " + it.next()); } System.out.println(); } }


Student类的代码:

@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; } } 

输出结果:

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