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);
}
}
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);
}
}
相关文章推荐
- java容器类线程安全性分析
- java容器类---HashMap、HashSet
- Java容器类的深入理解
- Java高级技术第四章——Java容器类之Set从源码开始详解
- java容器类
- Java容器类
- java容器类
- Java高级技术第四章——Java容器类Queue之从小顶堆到优先队列PriorityQueue
- java容器类
- Java容器类的深入理解
- Java容器类的深入理解
- Java容器类简述
- Java高级技术第四章——Java容器类Map之快速的HashMap
- java容器类
- Java容器类List、ArrayList、Vector及map、HashTable、HashMap分别的区别
- java容器类---ArrayList
- java容器类
- java容器类
- Java容器类