集合映射
Import Java.util.*;
一.映射Map
Map把关键字Key映射到值Value, 即所谓的Key/Value对。
1. HashMap
HashMap是基于Hash table 的接口,但是它不能保证集合中元素的顺序。当使用HashMap的一些基本操作(put()或get())时,所消耗的时间是很稳定的。
影响hashmap性能的因素:
I. 初始容量的大小
II. 加载参量
Eg:
publicstaticvoid main(String[] args) {
// TODO Auto-generated method stub
Map map=new HashMap(); //初识容量为16
map.put("stu1", "tom");
map.put("stu2", "tomclus");
map.put("stu3", "spark");
System.out.println(map.get("stu1"));
//通过value集合输出objects
Collection collection=map.values();
Iterator iterator=collection.iterator();
while(iterator.hasNext())
{
System.out.println(iterator.next());
}
}
2.LinkedHashMap
LinkedHashMap是HashMap的子类,它具有已知的迭代顺序(在使用iterator)时。
他维护了一个双向链表,这个链表的顺序决定了迭代的输出顺序。
需要注意的是:当一个重复元素被插入时,并不会影响原来的连标的顺序,实际上重复的key也不会被插入。
Eg.
Map map = new LinkedHashMap();
同上
3.TreeMap
TreeMap类实现了Map接口。TreeMap提供了按排序顺序存储“关键字/值”对的有效手段。应该注意的是,不像散列映射(HashMap),树映射(TreeMap)保证它的元素按照关键字升序排列。下面是TreeMap构造函数:
TreeMap<K,V>()
TreeMap<K,V>(comparator<K> comp)
这里TreeMap是j2se中唯一实现SortedMap接口的类,他使用红黑书结构来对加入的对象进行排序,默认的排序方式是采用Key值升序字典排序。
Eg:
publicstaticvoid main(String[] args) {
// TODO Auto-generated method stub
Map map=new TreeMap(); //初识容量为16
map.put("a", "tom");
map.put("bb", "tomclus");
map.put("ba", "spark");
System.out.println(map.get("stu1"));
//通过value集合输出objects
Collection collection=map.values();
Iterator iterator=collection.iterator();
while(iterator.hasNext())
{
System.out.println(iterator.next());
}
}
二.映射Set
Set接口继承自Collection接口,Set容器中的对象都是唯一的,加入Set容器中的对象都必须重新定义!
1. HashSet
HashSet类实现了Set接口,但不能保证按照对象加入的顺序在其和中排序,也不能按照hashcode排序
EG:
publicstaticvoid main(String[] args) {
// TODO Auto-generated method stub
Set set = new HashSet();
set.add("a");
set.add("b");
set.add("c");
set.add(null);
set.add("d");
//遍历这个集合类set
Iterator iterator = set.iterator();
while(iterator.hasNext())
{
String temp = (String)iterator.next();
if(temp!=null)
System.out.print(temp+temp.hashCode()+" ");
else
System.out.print("null ");
}
}
2.同时有 LinkedHashSet and TreeSet
三.映射List
List接口是Collection接口的子接口,它是一个有序的集合,类适于列队。
有ArrayList and LinkedList
1. ArrayList
ArrayList时使用一维数组实现List接口,所以对快速的随机数局的想象来说是用ArrayList可以得到较好的效能。
EG:
publicstaticvoid main(String[] args) {
// TODO Auto-generated method stub
List<String> list = new ArrayList<String>(); //范型
list.add("a");
list.add("b");
list.add("c");
list.add("d");
System.out.println(“显示list中的内容”);
For(int i=0;i<list.size();i++)
{
System.out.pritnln(list.get(i));
}
}