首页 > 代码库 > Java学习笔记_25_Collections类

Java学习笔记_25_Collections类

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