Java集合介绍2

来源:互联网 发布:淘宝小白是什么意思啊 编辑:程序博客网 时间:2024/05/20 10:22

3、List接口


4、Queue接口

        Queue用于模拟了队列这种数据结构,队列通常是指“先进先出”(FIFO)的容器。队列的头部保存在队列中时间最长的元素,队列的尾部保存在队列中时间最短的元素。新元素插入(offer)到队列的尾部,访问元素(poll)操作会返回队列头部的元素.通常,队列不允许随机访问队列中的元素。

Queue接口中定义了如下几个方法:

        》void add(Object e):将指定元素加入此队列的尾部。

        》Objeot element():获取队列头部的元素,但是不删除该元素。

        》boolean Offer(Object e):将指定元素加入此队列的尾部。当使用有容量限制的队列时,此方法通常比add(Object e)方法更好。

        》Object peek():获取队列头部的元素,但是不删除该元素。如果此队列为空,则返回null。

        》Object poll():获取队列头部的元素,并删除该元素。如果此队列为空,则返回null。

        》Object remove():获取队列头部的元素,并删除该元素。

        Queue有两个常用的实现类:LinkedList和PriorityQueue,LinkedList功能比较强大,它是一个双向队列,而且可以当成“栈”来使用,因为该类里包含了pop(出栈)和push(入栈)两个方法,除此之外还可以从图中看出它还实现了List接口,所以还可以当成List使用。但是因为LinkedList的实现机制不同于ArrayListVector,它内部以列表的形式来保存集合中的元素,因此在随机访问集合元素时性能较差,不过插入、删除元素时性能非常好(只改变指针所指的地址即可),实际上Vector因为实现了同步功能,所以性能上也落后于ArrayList,所以我们更多的使用的是ArrayList实现类。我们一般在有特殊要求的时候再去考虑使用LinkedList。至于PriorityQueue是一个比较标准的队列实现类,它对元素的要求与前面TreeSet要求基本一致,这里就不多解释了。

5、Map接口


6、操作集合工具类:Collections

        Java提供了一个操作set、List和Map等集合的工具类:collections,该工具类里提供了大量方法

对集合元素进行排序、查询和修改等操作,还提供了将集合对象设置为不可变、对集合对象实现同步

控制等方法,这样就弥补了HashMap、ArrayList等不能同步的缺陷。

排序操作——Collections提供了如下几个方法用于对List集合元素进行排序:

        》static void reverse(List Iist):反转指定List集合中元素的顺序。

        》static void shuffle(List list):对List集合元素进行随机排序(shuffle方法模拟了“洗牌”动作)。

        》static void sort(List list):根据元素的自然顺序对指定List集合的元素按升序进行排序。

        》static void sort(List Iist, Comparator c):根据指定Comparator产生的顺序对List集合的元素进行排序。

        》static void swap(List list, int i, int j):将指定List集合中 i 处元素和 j 处元素进行交换.

        》static void rotate(List Iist ,int distance):将指定集合中i处元素和list.length一1 -i处的元素进行交换。

找,替换操作——Collections还提供了如下用于查找、替换集合元素的常用方法:

        》static int binarySearch(List list, Object key):使用二分搜索法搜索指定List集合,以获得指定对象在List集合中的索引。如果要该方法可以正常工作,必须保证List中的元素己经处于有序状态。

        》static Object max(Collection coll):根据元素的自然顺序,返回给定集合中的最大元素。

        》static Object max(Collection coll, Comparator comp):根据指定Comparator产生的顺序,返回给定集合的最大元素。

        》static Object min(ColIection coll):根据元素的自然顺序,返回给定集合中的最小元素.

        》static Object min(Collection coll, Comparator comp):根据指定Comparator产生的顺序,返回给定集合的最小元素。

        》static void fill(List Iist, Object obj):使用指定元素obj替换指定List集合中的所有元素。

        》static int frequency(Collection c, object o):返回指定集合中等于指定对象的元素数量。

        》stetic int indexOfSubList(List source, List target):返回子List对象在母List对象中第一次出现的位置索引;如果母Liat中没有出现这样的子List,则返回-1。

        》stetic int IastlndexOfSubList(List source,List target):返回子List对象在母List对象中最后一次出现的位置索引:如果母List中没有出现这样的子Liat,则返回-1。

        》static boolean replaceAll(List Iist, Object oldVal, Object newVal):使用一个新值newVal替换List对象所有的旧值oldVal。

同步控制

        Collections类中提供了多个synchronizedXxx方法,该方法返回指定集合对象对应的同步对象,从而可以解决多线程并发访问集合时的线程安全问题。如下面的练习:

public class TestSynchronized{public static void main(String[] args){//下面程序创建了四个同步的集合对象Collection C = Collections.synchronizedCollection(new ArrayList());List list = Collections.synchronizedList(new ArrayList());Set s = Collections.synchronizedSet(new Hashset());Map m = Collections.synchronlzedMap(new HashMap());}}

设置不可变集合——Collections提供了如下三类方法来返回一个不可变的集合:

        》emptyXxx():返回一个空的、不可变的集合对象,此处的集合既可以是List,也可以是Set,还可是Map。

        》SingletonXxX():返回一个只包含指定对象(只有一个或一项元素)的、不可变的集合对象,此处的集合既可以是List,也可以是Set,还可以是Map。

        》unmodifiableXxx:返回指定集合对象的不可变视图。此处的集合既可以是List,也可以是Set,还可以是Map。

 

到此java集合就算基本介绍完了,更加深入的我们会参考API文档即可...

原创粉丝点击