Collections框架简介

来源:互联网 发布:lda模型 矩阵分解 编辑:程序博客网 时间:2024/06/06 18:00

Collections框架(有s

一、Collections针对集合类的一个包装类,提供一系列静态方法用来实现集合的各种操作。不可实例化服务Collection

具体的方法如下:

l .sort方法。排序用。Collections.sort(list, new PriceComparator());的第二个参数返回一个int型的值,就相当于一个标志,告诉sort方法按什么顺序来对list进行排序。我们需要自己定义“PriceComparator”类

二、Collection(没s

Set,List,Map三个接口

1. Set。数学意义上的集合,集合中的元素不能重复。该接口有两个实现类:

1) HashSet

2) TreeSet。实现了SortedSet接口,因此其中的元素是有序的

2. List。被称为“有序”的Collection,但并不是说其中的元素经过了排序,指的是按照对象进入的顺序保存对象,所以可以对列表中每个元素的插入和删除进行精准地控制。同时也允许元素重复。

三个基本实现类。都是对象数组,而且是可伸缩数组

这些类放在java.util文件中

1) LinkedList

a. 采用双向列表,插入数据效率快。但是线程不安全

2) ArrayList

a.  它和Vector一样,在存储的时候会在内存中开辟一片连续的空间进行存储,因此其中的元素是有序的,检索的速度特别快,但是要增加或者删除的话要移动所有的元素,因此改动的速度很慢

b.  他们都有一个初始化的容量的大小,每次存储达到极限后都要扩充容量,Vector默认扩充为原来的2倍(可设置大小),而ArrayList默认扩充为原来的1.5倍(不可设置大小)

3) Vector

3. Map

Map集合进行遍历的四种方法:

1) 遍历keySet.

2) 使用Map.entry.Map类提供了一个称为entrySet()的方法,这个方法返回一个Map.Entry实例化后的对象集。接着,Map.Entry类提供了一个getKey()方法和一个getValue()方法。举例如下:

Set entries = map.entrySet( );//返回一个Map.Entry对象集合if(entries != null) {  Iterator iterator = entries.iterator( );//对这个Set集合进行遍历,返回一个迭代对象  while(iterator.hasNext( )) {    Map.Entry entry =iterator.next( );      Object key = entry.getKey( );//得到键值      Object value = entry.getValue();//得到相应的值  }}


3) 通过Map.values()遍历所有的value,但不能遍历key

  for (String v : map.values()) {         System.out.println("value= " + v);       }


4) 2)的基础之上。二使用了迭代器,是对迭代对象进行遍历,如果追求更高效率,则直接 对map.entrySet()进行遍历

 for (Map.Entry<String, String> entry : map.entrySet()) {       System.out.println("key= " + entry.getKey() + " and value= "+entry.getValue());  }


 

四个具体(基本)实现类

1) HashMap.基于散列表实现,采用键的HashCode(也就是key)可以进行快速查询。可以有至多一个空值(HashTable不允许),线程不同步

如果需要输出的顺序和输入的顺序一样,可以用HashMap的子类:LinkedHashMap

2) HashTable.线程同步,安全性更高,但是效率不如HashMap

3) TreeMap.实现了SortedSet接口,因此其中的元素是有序的

总结:

安全性

同步/异步

线程安全:

同步

HashTableVector

线程不安全:

异步

HashMapArrayList

LinkedList

安全性               同步/异步            具体的类           线程安全同步①HashTableVector          线程不安全异步

HashMapArrayList

LinkedList





 

原创粉丝点击