首页 > 代码库 > JAVA的集合类
JAVA的集合类
集合类的继承关系
Collection
├List
│├LinkedList
│├ArrayList
│└Vector
│ └Stack
└Set
│├HashSet
│└TreeSet
│
Map
├Hashtable
├HashMap
Collection接口中有很多方法 ,值得特别提出的是Inerator方法;它返回在此collection的元素上进行迭代的迭代器,用于遍历集合中的对象,用法看 http://blog.csdn.net/u010634066/article/details/37880803
一 List集合
List接口继承了Collection接口,还定义了2个非常重要的方法
get(int index) //获得指定索引的元素
get(int index,Object obj) //将集合中指定索引位置的值改为指定的对象;
List接口的实现类:
ArrayList:优点是实现了可变数组,允许所有元素(包括null,set集合中不能包含重复对象)可以实现快速访问;
缺点是插入删除对象效率低速度慢
LinkedList:采用链表存储对象,插入删除速度快
随机访问效率低;
实例化
List list1=new ArraryList(); List list2=new LinkedList();
二 SET 集合
set集合中的对象不按特定的顺序排序,只是简单的把对象加入,set集合中不能包含重复的对象;
set接口继承了collection接口
set接口实现类:
HashSet: 用hash表支持,不保证set迭代顺序,特别是保证该顺序一直不变(比如我们一般迭代都是按自然增长顺序迭代,第一根第二比较等等,这里不不是),此类允许使用null
HashSet hs=new HashSet(); hs.add(1); hs.add(22); hs.add(33); hs.add(4); hs.add(null);//可以使用null System.out.println(hs); //结果是 [null, 1, 33, 4, 22] 可以看到它不是按照顺序迭代的
TreeSet 实现了java.unit.SortedSet接口;因此teeeset实现的Set集合在遍历时候可以按照自然增长顺序题赠排序;
TreeSet类新增的方法
Object first():返回集合中的第一个元素.
Object last():返回集合中最末一个元素.
SortedSet headSEt(toElement):返回此Set的子集,由小于toElement的元素组成.
SortedSet tailSet(fromElement):返回此Set的子集,由大于或等于fromElement的元素组成.
SortedSet subSet(fromElement,toElement):返回此Set的子集合,范围由fromElement(包含)到toElement(不包含).
特别强调一点:
Treeset中的元素是有序的.
TreeSet ts=new TreeSet(); ts.add(3); ts.add(34); ts.add(6); ts.add(0); ts.add(0); System.out.println(ts); System.out.println(ts.first()); System.out.println(ts.last()); //包好object(不包含)之前所有的对象,这里是对象3之前的所有对象,不包含3 System.out.println(ts.headSet(3)); //包好object from 和 object to (不包含)之前所有的对象 System.out.println(ts.subSet(3, 34)); //返回object to 之后的所有对象 包含to System.out.println(ts.tailSet(6));
</pre><pre class="java" name="code">//结果:
[0, 3, 6, 34] 0 34 [0] [3, 6] [6, 34]
可以发现迭代出来后市已经排序好了的;我们不难看出:TreeSet并不是根据元素的插入顺序来排序的,而是根据元素的实际值来排序的.
我们不难看出:TreeSet并不是根据元素的插入顺序来排序的,而是根据元素的实际值来排序的.
MAP集合
Map没有继承Collection接口,其提供的是key到value的映射。Map接口不能包含相同的Key,每个key只能映射 种称为散死技术进行的处理,亲生一个散死码的整数值,散列码常用作一个偏移量,该偏移量对应分配给映射的内存区域的起始位置,从而来确定存储对象在映射中的存储位置。 Map集合包含Map接口和Map接口的所有实现类。
Map接口
Map接口位于java.util包下,实现Map的类是可用来存储键(Key)——值(Value)对的容器。
Map接口的实现类有HashMap和TreeMap等,底层分别使用哈希表和二叉树来实现存储。
此容器中存储的键——值对通过键来标识,所以键不能重复。
提供的常用方法有:
Object put(Object key,Object value);//往容器中添加元素,键、值均为对象,由于键不能重复,如果添加的元素的key已存在,则覆盖value,以Object类型返回被覆盖的value;如果添加的元素的key不存在,则返回null。
Object get(Object key);//获取容器中键为key的元素的value,以Object类型返回。如果不存在此key,则返回null。
Object remove(Object key);//从容器中移除键为key的元素,以Object类型返回该元素的value;如果无元素的键为key,则返回null,如果此映射允许 null 值,则返回 null 值并不一定 表示该映射不包含该键的映射关系;也可能该映射将该键显示地映射到 null。
boolean containsKey(Object key);//该容器是否包含键为key的元素。
boolean containsValue(Object value);//该容器是否包含值为value的元素。
int size();//该容器中键值对的个数;
boolean isEmpty();//是否为空
void putAll(Map t);//将t中的所有元素添加到该容器中
void clear();//清空
在判定是否相同时,会隐式调用对象的equals和hashCode方法,以此为依据是否重复。
import java.util.*; public class UpdateStu { public static void main(String[] args) { Map map = new HashMap(); //构建Map实例 map.put("01","李同学"); //向集合中添加对象 map.put("02","魏同学"); Set set = map.keySet(); //构建map集合中的所有key对象的集合 Iterator it = set.iterator(); //创建集合迭代器 System.out.println("key集合中的元素:"); while(it.hasNext()){ //遍历集合 System.out.println(it.next()); } Collection coll = map.values(); //构建map集合中所有values值集合 it = coll.iterator(); System.out.println("values集合中的元素:"); while(it.hasNext()){ //遍历集合 System.out.println(it.next()); } } }
Map接口的实现类
Map 接口常用的实现类有HashMap和TreeMap。
HashMap类实现的Map集合对于添加和删除映射关系效率更高。
而TreeMap中的映射关系存在一定的顺序。
HashMap类:基于哈表的map接口的实现,此实现提供所有可选的映射操作,并允许使用null值和nll键,但必须保证键的唯一性。
TreeMap 类:不仅实现了Map接口,还实现了java.util.SortedMap接口,因此集合中的映射关系具有一定的顺序性。它是根据锓对象按照一定的顺序排列的,因此不允许对象是null。