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不允许),线程不同步
l 如果需要输出的顺序和输入的顺序一样,可以用HashMap的子类:LinkedHashMap
2) HashTable.线程同步,安全性更高,但是效率不如HashMap
3) TreeMap.实现了SortedSet接口,因此其中的元素是有序的
总结:
安全性 | 同步/异步 | 类 |
线程安全: | 同步 | ①HashTable②Vector |
线程不安全: | 异步 | ①HashMap②ArrayList ③LinkedList |
安全性 | 同步/异步 | 具体的类 |
线程安全 | 同步 | ①HashTable②Vector |
线程不安全 | 异步 | ①HashMap②ArrayList ③LinkedList |