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

Java学习笔记_25_Collections类,布布扣,bubuko.com

时间: 2024-12-27 03:09:58

Java学习笔记_25_Collections类的相关文章

Java学习笔记——File类之文件管理和读写操作、下载图片

Java学习笔记——File类之文件管理和读写操作.下载图片 File类的总结: 1.文件和文件夹的创建 2.文件的读取 3.文件的写入 4.文件的复制(字符流.字节流.处理流) 5.以图片地址下载图片 文件和文件夹 相关函数 (boolean) mkdir() 创建此抽象路径名指定的目录  (boolean) mkdirs() 创建此抽象路径名指定的目录,包括所有必需但不存在的父目录. (boolean) delete() 删除此抽象路径名表示的文件或目录 (boolean) createNe

Java学习笔记_19_String类

19.String类: 1>String类的构造方法: · 利用字符串构造一个字符串对象: String str = "HelloWorld": · 无参构造一个字符串对象: String str = new String(); · 传递参数生成一个字符串对象: String str = new String("HelloWorld"); · 由字符数组生成一个字符串对象: String str = new String(char s[ ]); · 由字符数组

Java学习笔记—复用类

复用代码是Java众多引人注目的功能之一. 一般而言,实现代码重用java提供了两种方式:组合以及继承. 组合:新的类由现有类的对象所组成.(复用现有代码的功能,而非它的形式) 继承:按照现有类的类型组建新类.(在不改变现有类的基础上,复用现有类的形式并在其中添加新代码). 组合 class Engine{ public void start(){} public void stop(){} } class Door{ public void open(){} public void close

Java学习笔记1——类和对象

面向对象 对象:万物皆对象 面向对象 类:模子,属性+方法,类是对象的类型,是具有相同属性和方法的一组对象的集合 对象属性:对象拥有的各种特征,"对象有什么" 对象方法:对象执行的操作,"对象能干什么" 类与对象的关系/区别:类是抽象的,仅仅是模版:对象是看得到,摸得着的具体实体.例如:'手机'类,对象为iPhone6,Lumia920 Java中的类 定义类:Java程序都以类class为组织单元 创建一个对象 //1.定义一个类 public class Tel

Java学习笔记-3.类与对象

一.面向对象程序设计 1.概念:   OOA:面向对象的分析,将现实世界进行抽象的分析 OOD:面向对象的设计 OOP:面向对象的程序 2.面向对象的特点: (1)封装性:一是把对象的全部状态和行为结合在一起,形成一个不可分割的整体,对象的私有属性只能由对象的行为来修改和读取 二是尽可能隐藏对象的内部细节,与外界的联系只能够通过外部接口来实现 (2)继承性:特殊类的对象拥有其一般类的属性和行为 (3)多态性:指同一个实体同时具有多种形式,体现在不同的对象可以根据相同的消息产生各自不同的动作 二.

java学习笔记——String类

一.概述 ·字符串是一个特殊的对象 ·字符串一旦初始化就不可以被改变 ·String str = "abc"; ·String str1 = new String("abc"); 有什么区别? package com.java.study.StringDemo; public class StringDemo { public static void main(String[] args) { String s1 = "abc"; //s1是一个

JAVA学习笔记-Date类

在标准Java类库中包含一个Date类.它的对象表示一个特定的瞬间,精确到毫秒. Java中时间的表示说白了也是数字,是从:标准纪元1970.1.1 0点开始到某个时刻的毫秒数,类型是long. jdk:  //返回一个当前的时间 Date d = new Date(); long t = System.currentTimeMillis();//返回一个当前的时间 System.out.println(t);

java学习笔记--常用类

一.Math类:针对数学运算进行操作的类 1.常用的方法 A:绝对值   public static int abs(int a) B:向上取整  public static double ceil(double a) C:向下取整 public static double floor(double a) D:两个数据中的大值 public static int max(int a, int b) E:a的b次幂 public static double double pow(double a

[Java学习笔记]JFrame类的pack()与validate()方法的区别(待补充)

每次写图形化程序的时候,只有手动调整JFrame框架大小才能显示出里面的内容.用了validate()不行,而pack()可以解决这个问题. pack()//是自动适应大小.在写程序的时候,如果定义了preferred size,则会按照首选大小画框架大小:或者按照容器内组件的大小来自适应大小.vailate()//是重新调整大小,前提是已经设置大小(已经调用了setSize()),且大小发生变化.如最大最小化窗口. 待补充...