JAVA COLLECTION 区别_JAVA中Collection和Collections的区别

1、java.util.Collection 是一个集合接口。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式。

以下接口实现了Collection接口:

map,set,list,vector

Collection

├List

│├LinkedList

│├ArrayList

│└Vector

│ └Stack

└Set

2、java.util.Collections 是一个包装类。它包含有各种有关集合操作的静态多态方法。此类不能实例化,就像一个工具类,服务于Java的Collection框架。

import java.util.ArrayList;

import java.util.Collections;

import java.util.List;

public class TestCollections {

public static void main(String args[]) {

//注意List是实现Collection接口的

List list = new ArrayList();

double array[] = { 112, 111, 23, 456, 231 };

for (int i = 0; i < array.length; i++) {

list.add(new Double(array[i]));

}

Collections.sort(list);

for (int i = 0; i < array.length; i++) {

System.out.println(list.get(i));

}

// 结果:23 111 112 231 456

}

}

具体来看下Collections中的sort方法:(以下代码摘自Collections类中源码)

public static > void sort(List list) {

Object[] a = list.toArray();

Arrays.sort(a);

ListIterator i = list.listIterator();

for (int j=0; j

i.next();

i.set((T)a[j]);

}

}

可以看到他的静态方法sort方法可以传入一个list,上面说过list是实现了Collection接口。然后将list转成了数组对象后,调用了Array的sort方法,将数组排序,再用list的迭代器(注意不是collection迭代器)一个个得赋值回去,就使得传入的list变成了一个有序的list。

对以上的步骤相信看了源码都能看懂,数组的sort方法底层调用的是一个DualPivotQuicksort的方法,看着名字像快排,但可能有些不同,暂时没有仔细去研究。

需要注意的是

由于set,map都有SortedSet,TreeSet和SortedMap实现类,所以Collections中并没有对set和map支持sort方法

sort方法默认的顺序是升序,如果你想要降序排,你可以调用Collections中的另一个sort方法

public static void sort(List list, Comparator super T> c) {

Object[] a = list.toArray();

Arrays.sort(a, (Comparator)c);

ListIterator i = list.listIterator();

for (int j=0; j

i.next();

i.set(a[j]);

}

}

可以看到,这个sort方法是传入了一个比较器,所以你可以定义如何来排序。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值