java容器类
来源:互联网 发布:wind万德数据库官网 编辑:程序博客网 时间:2024/05/20 21:47
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();返回字符串
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());}
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容器类学习心得
- java容器类
- java容器类
- java容器类
- Java容器类
- Java容器类--Collection
- Java容器类学习
- java 容器类 小结
- java容器类
- JAVA 容器类
- java容器类(1)
- java容器类(2)
- java容器类(3)
- java中的容器类
- JAVA容器类解析
- Java中的容器类
- Java中的容器类
- butterknife
- 微信支付之扫码支付相关代码(Java)(转载)
- openCV 在ubuntu 虚拟机中的linux中安装,并且运行用控制台运行自行写helloworld
- 让apache开启.htaccess--让thinkphp框架的index.php在U地址不用写
- 199. Binary Tree Right Side View
- java容器类
- [160909][Java]二进制编辑器
- JSP入门1
- 亚马逊VPS node.js loopback 初次配置服务器端环境(Ubuntu环境)
- 人件读书笔记(01) 此时此刻,一个项目正在走向失败
- 最大搜索二叉树
- Runnable接口实现多线程
- 使用IDEA创建第一个Servlet工程
- 设计模式之责任链模式