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>>;这是泛型比较复杂的应用!
调用代码如下:
若List集合中元素本身不具有比较性,也可以传递比较器的方式调用sort方法进行比较:
2、max、min查找方法:针对List集合
跟sort中的定义泛型类似,由于查找最大最小也需要比较,因此需要List集合中的元素具有比较性才能调用该方法!
3、binarySearch查找方法:针对List集合
返回值为:
若集合中存在此元素:
输出:
1
表明查找位置在角标为1的位置上;
若集合中不存在:
-6
表明插入点位置应为5:因为-6=-(5)-1;
4、实现集合同步:Collection、Map
5、随机排放
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);
相关文章推荐
- Java中集合框架工具类——Arrays(传智播客毕老师视频讲解)
- Java中基本数据类型对象包装类(传智播客毕老师视频讲解)
- Java中泛型(2)——泛型类(传智播客毕老师视频讲解)
- Java中System类(传智播客毕老师视频讲解)
- Java中Map接口(传智播客毕老师视频讲解)
- Java中IO流(1)——IO流概述(传智播客毕老师视频讲解)
- 黑马程序员 java 基础 毕向东 面向对象 集合框架 工具类 Collections and Arrays
- Java中可变参数方法(传智播客毕老师视频讲解)
- 黑马程序员 java基础集合框架之集合工具类Collections
- 黑马程序员——Java基础--集合框架工具类:Collections、Arrays、其他对象
- Java中Runtime类(传智播客毕老师视频讲解)
- Java多线程(2)——多线程安全(传智播客毕老师视频讲解)
- Java多线程(1)——多线程创建(传智播客毕老师视频讲解)
- 黑马程序员_Java第17天知识总结_集合框架的工具类_Collections_Arrays_将数组变成list集合_集合变数组_高级for循环_可变参数
- Java中静态导入(传智播客毕老师视频讲解)
- Java中String类(传智播客毕老师视频讲解)
- Java中Collection子接口(2)——Set接口(传智播客毕老师视频讲解)
- Java中泛型(4)——泛型接口(传智播客毕老师视频讲解)
- Java中Collection子接口(1)——List接口(传智播客毕老师视频讲解)
- Java中时间获取(传智播客毕老师视频讲解)