您的位置:首页 > 编程语言 > Java开发

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

2014-10-02 19:54 671 查看
集合框架的工具类。

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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐