您的位置:首页 > 编程语言 > Java开发

java容器类

2016-09-09 15:58 253 查看
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);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息