1,java 容器有哪些?
答:一,Collection 是最基础的集合,一切集合的父接口。一个collection 代表着一组object。
在java SDK 不提供直接实现collection 的类,而是提供了继承collection 的子接口 List , Set
1,List 接口
List 是有序可重复的接口,常用类有LinkList ArrayList Vector stack.
(1) LinkList:允许null 值 数据结构属于链表数据结构,线程不安全的;
例子:
List link =new LinkedList();
link.add(1);
link.add(3);
link.add(2);
link.add(2);
link.add(null);//[1, 3, 2, 2, null]
(2)ArrayList :允许null 值 数据结构为数组类型,线程不安全的;
List link =new ArrayList<>();
link.add(1);
link.add(3);
link.add(2);
link.add(2);
link.add(null);//[1, 3, 2, 2, null]
(3)Vector:允许null 值 非常类似ArrayList,但是Vector是同步的,线程安全的;
List link =new Vector<>();
link.add(1);
link.add(3);
link.add(2);
link.add(2);
link.add(null);//[1, 3, 2, 2, null]
(4)Stack 类 Stack继承自Vector,实现一个后进先出的堆栈。Stack提供5个额外的方法使得Vector得以被当作堆栈使用。基本的push和pop方 法,还有 peek方法得到栈顶的元素,empty方法测试堆栈是否为空,search方法检测一个元素在堆栈中的位置。Stack刚创建后是空栈。
2,Set接口:不重复元素collection ,Set最多有一个null元素 Set容器类主要有HashSet和TreeSet等。
(1)HashSet 类:无序 不重复的集合;
Set link=new HashSet<>();
link.add(1);
link.add(3);
link.add(2);
link.add(2);
link.add(null);
link.add(null);
System.err.println(link);//[null, 1, 2, 3]
(2) TreeSet 类: 不能有null 元素否则报错,可排序不重复的集合按照“升序”排列。
Set link=new TreeSet();
link.add(5);
link.add(5);
link.add(2);
link.add(9);
//[2, 5, 9]
二,Map集合接口
Map 是提供Key value 的映射,key 唯一值。不继承collection . 实现类:HashTable HashMap
(1) HashTable 类: key 不能为 null 并且value 不能为空 ,是同步的是线程安全的。 HashTable直接使用对象的hashCode
(2) HashMap 类:key 和value 同时可以为null; 而HashMap重新计算hash值。 线程不安全的。
Map<String,String> table=new HashMap<>();
table.put(null, null);//{null=null}
(3)WeakHashMap类
WeakHashMap是一种改进的HashMap,它对key实行“弱引用”,如果一个key不再被外部所引用,那么该key可以被GC回收。
Map 迭代获取数据实例:
1,获取key
Map<String,String> map=new HashMap<>();
map.put(null, null);
map.put("1", "a");
map.put("2", "b");
for(String key:map.keySet()) {
System.err.println(key);
}
2,while 获取 key value
@SuppressWarnings(“unchecked”)
Map<String,String> map=new HashMap<>();
map.put(null, null);
map.put(“1”, “a”);
map.put(“2”, “b”);
Iterator<Map.Entry<String, String>> iterator= map.entrySet().iterator();
while(iterator.hasNext()) {
Map.Entry<String, String> entry=iterator.next();
System.err.println(“key:”+entry.getKey()+" value:"+entry.getValue());
}
3. for 获取 key value
@SuppressWarnings(“unchecked”)
Map<String,String> map=new HashMap<>();
map.put(null, null);
map.put(“1”, “a”);
map.put(“2”, “b”);
for(Map.Entry<String, String> entry :map.entrySet()) {
System.err.println(“key:”+entry.getKey()+" "+entry.getValue());
}