Java中集合框架工具类——Collections(传智播客毕老师视频讲解)

集合框架的工具类。
Collections:集合框架的工具类。里面定义的都是 静态方法。因此不需要创建对象,直接类调用即可!

Collections和Collection有什么区别?
Collection是集合框架中的一个顶层接口,它里面定义了单列集合的共性方法。
它有两个常用的子接口:
List:对元素都有定义索引。有序的。可以重复元素。
Set:不可以重复元素。无序。

Collections是集合框架中的一个工具类。该类中的方法都是静态的
提供的方法中有可以 对list集合进行排序,二分查找等方法。
通常常用的集合都是线程不安全的。因为要提高效率。

如果多线程操作这些集合时,可以通过该工具类中的同步方法,将线程不安全的集合,转换成安全的。


1、sort排序方法:针对List集合


即传入的集合应该是List集合,其中List集合中的元素可以为任意类型,在传进的同时,<T>变为所传入元素的类型,但由于List集合不要求其内部元素有比较性,而sort方法是根据比较排序的。因此在调用sort方法时,为了保证安全,必须使得<T>应具有比较性才能调用sort方法,即应用泛型限定,没有比较性的List集合无法排序,因此要求:<T extends Comparable>,同时由于比较方法可以调用父类的比较方法,因此为<T extends Comparable<? super T>>;这是泛型比较复杂的应用!

调用代码如下:

import java.util.*;

public class Strudent implements Comparable<Strudent>
{
	private String name;
	Strudent(String name)
	{
		this.name=name;
	}
	public String getName()
	{
		return name;
	}
	public int compareTo(Strudent obj)
	{//给Student类提供了比较方法:逆序
		return obj.getName().compareTo(this.getName());
	}
	public String toString()
	{//复写了Object中的toString方法,使得能够按照自己想要的形式输出
		return name;
	}	
}

public class SortDemo
{
	public static void main(String[] arg)
	{
		List<Strudent> L=new ArrayList<Strudent>();
		L.add(new Strudent("001"));
		L.add(new Strudent("002"));
		L.add(new Strudent("005"));
		L.add(new Strudent("004"));
		L.add(new Strudent("003"));
		show(L);
		Collections.sort(L);
		show(L);
	}
	public static void show(List<? extends Strudent> L)
	{
		System.out.println(L);
	}
}
结果如下;


若List集合中元素本身不具有比较性,也可以传递比较器的方式调用sort方法进行比较:

import java.util.Comparator;

public class myCompare implements Comparator<Strudent>
{
	public int compare(Strudent obj1,Strudent obj2)
	{//正序
		return obj1.getName().compareTo(obj2.getName());
	}
}

…………

Collections.sort(L,new myCompare());
show(L);
结果如下:


2、max、min查找方法:针对List集合


跟sort中的定义泛型类似,由于查找最大最小也需要比较,因此需要List集合中的元素具有比较性才能调用该方法!

System.out.println(Collections.max(L,new myCompare()));
输出:

3、binarySearch查找方法:针对List集合

返回值为:


若集合中存在此元素:

Strudent s=new Strudent("002");
System.out.println(Collections.binarySearch(L,s,new myCompare()));

输出:

1

表明查找位置在角标为1的位置上;

若集合中不存在:

Strudent s=new Strudent("006");
System.out.println(Collections.binarySearch(L,s,new myCompare()));
输出:

-6
表明插入点位置应为5:因为-6=-(5)-1;

4、实现集合同步:Collection、Map


5、随机排放


Collections.shuffle(L);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值