java容器类

来源:互联网 发布:wind万德数据库官网 编辑:程序博客网 时间:2024/05/20 21:47
java的容器类主要分为两类:
Collection接口:存储一组对象

Map接口:存储一组关键字/值对

其中collection接口有两个子接口:Set和List。

容器类的关系:

collection
||Set:不包含重复元素的Collection
||List:有序的Collection,元素的位置类似于数组的下标
Map


List
||LinkedList用链表的形式来保存对象
||ArrayList用数组的形式来保存对象
||Vector类似于ArrayList,但这个是同步的
||Stack

Set
||HashSet
||TreeSet
||LinkedSet
Map
||Hashtable同步,多线程并发使用,key和value都不允许null
||HashMap不同步,允许null出现
||WeakHashMap


Collection接口定义的方法:

boolean add(Object o)添加对象boolean remove(Object o)删除对象int size()元素数量boolean contains(Object o)查找对象boolean isEmpty()判断为空Iterator iterator()迭代器boolean containsAll(Collection c)查找集合boolean addAll(Collection c)添加集合void clear()删除所有元素void removeAll(Collection c)删除集合void retainAll(Collection c)删除集合不包含的Object[] toArray();返回字符串


Map接口定义的方法:

boolean equals(Object o)比较对象boolean remove(Object o)删除对象put(Object key, Object value)

不同:

LinkedList与ArrayList

LinkedList是链表形式保存的,当进行add和remove时更优,速度更快,不用找到数组下标

ArrayList是数组形式保存的,当进行set和get时更优,速度更快,不用找到链表的指针


HashTable和HashMap

1.HashTable是同步的,HashMap在缺省的情况下是非同步的;

2.HashTable的key和values都不允许出现空值null,HashMap允许出现;

3.遍历方式在内部实现不同;

4.哈希值的使用不同。


使用:

List:

import java.util.ArrayList;import java.util.Iterator;import java.util.LinkedList;import java.util.List;public class ListTest {public static void main(String args[]){List list1 = new LinkedList();List list2 = new ArrayList();list1.add("String");list1.add(10);list2.add("String2");list2.add(1, 20);for(int i = 0; i < list1.size(); i++){System.out.println(list1.get(i));}Iterator iterator = list2.iterator();while(iterator.hasNext()){Object o = iterator.next();System.out.println(o);}}}
输出结果:

String

10

String2

20


Set:

import java.util.HashSet;import java.util.Iterator;import java.util.Set;public class SetTest {public static void main(String args[]){Set set1 = new HashSet();set1.add("String1");set1.add("String1");//重复性检查System.out.println("第一次重复性"+set1.size());set1.add("String2");System.out.println("第二次重复性"+set1.size());//不是有序的,遍历用for(object:target)for(Object o: set1){System.out.print(o);}System.out.println();Iterator iterator = set1.iterator();while(iterator.hasNext()){System.out.print(iterator.next());}}}


输出结果:

第一次重复性1
第二次重复性2
String2String1
String2String1


Map:

import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.Map.Entry;public class MapTest {public static void main(String args[]){Map map = new HashMap();map.put("广东", "广州");map.put("湖南", "长沙");System.out.println(map.size());System.out.println(map.get("湖南"));for(Object key : map.keySet()){System.out.println("key:"+key+" value:"+map.get(key));}Iterator iterator = map.entrySet().iterator();while(iterator.hasNext()){ Map.Entry entry = (Entry) iterator.next();   System.out.println("key:" + entry.getKey() + " value:" + entry.getValue());}}}

输出结果:

2
长沙
key:广东 value:广州
key:湖南 value:长沙
key:广东 value:广州
key:湖南 value:长沙


遍历方法:

List:

for(int i = 0; i < list1.size(); i++){System.out.println(list1.get(i));}Iterator iterator = list2.iterator();while(iterator.hasNext()){Object o = iterator.next();System.out.println(o);}

Set:

for(Object o: set1){System.out.print(o);}Iterator iterator = set1.iterator();while(iterator.hasNext()){System.out.print(iterator.next());}


Map:

for(Object key : map.keySet()){System.out.println("key:"+key+" value:"+map.get(key));}Iterator iterator = map.entrySet().iterator();while(iterator.hasNext()){Map.Entry entry = (Entry) iterator.next();System.out.println("key:" + entry.getKey() + " value:" + entry.getValue());}


泛型(指定类型)

</pre><pre name="code" class="java">import java.util.List;import java.util.ArrayList;public class ListTest2 {public static void main(String args[]){List<String> list = new ArrayList<String>();list.add("String");//出错//list.add(20);String str = list.get(0);System.out.println(str);}}

如果不指定

import java.util.List;import java.util.ArrayList;public class ListTest2 {public static void main(String args[]){List list = new ArrayList();list.add("String");list.add(20);//需要强制转换类型String str = (String) list.get(0);Object o = list.get(0);System.out.println(str+" "+o);}}



0 0
原创粉丝点击