4.1 Collection,List,Set,Iterator,Map
2015-12-24 16:35
501 查看
4.1.1 Collection<E>
java.util.Collection<E>看API
Collection中的元素个数不固定,可以任意扩充。
Collection的常用子类
List
Set
Queue
4.1.2 List<E>
java.util.List<E>是Collection的子接口
List接口可以存放任意类型的数据,而且value可以重复。
List接口常用的子类:ArrayList,Vector
常用操作:
判断集合是否为空:boolean isEmpty()
查找指定对象是否存在:int indexOf(Object o),不存在返回-1
List<String> lst = new ArrayList<String>();
元素个数:lst.size();
删除操作:lst.remove(index); //删除之后index有变化
List<String> lst1 = new Vector<String>();
不需要线程安全的时候,用ArrayList
ArrayList | Vector | |
---|---|---|
推出时间 | jdk1.2 | jdk1.2 |
性能 | 采用异步处理方式,性能高 | 采用同步处理方式,性能低 |
thread safe | 非线程安全 | 线程安全 |
4.1.3 Set<E>
Set接口中不能放入重复元素,但是可以排序。Set接口的常用子类
散列存放:HashSet,排放无序
[java] view
plaincopy
Set<String> s = new HashSet<String>();
s.add("A");
s.add("B");
s.add("C");
s.add("D");
s.add("E");
s.add("F");
System.out.println(s.contains("E"));
System.out.println(s);
有序存放:TreeSet
[java] view
plaincopy
Set<String> s = new TreeSet<String>();
s.add("A");
s.add("B");
s.add("C");
s.add("D");
s.add("E");
s.add("F");
4.1.4 Iterator<E>
集合输出的标准做法是使用Iterator接口。操作原理:
Iterator是专门的迭代输出接口,迭代输出就是将元素一个一个进行判断,判断其是否有内容,如果有则把内容取出
方法:
bool hasNext(); 如果还有元素可以迭代,返回true
E next(); 返回迭代的下一个元素
void remove(); 从迭代器指向的Collection中移除迭代器返回的最后一个元素。
[java] view
plaincopy
List<String> lists = new ArrayList<String>();
lists.add("A");
lists.add("B");
lists.add("C");
lists.add("D");
lists.add("E");
Iterator<String> iter = lists.iterator();
while (iter.hasNext()){
String str = iter.next();
if("A".equals(str)){
iter.remove();
} else{
System.out.print(str + " ");
}
}
结果打印:B C D E 4
“A”被从lists中删除了
迭代输出的时候,不能用collection去删除元素,比如说lists.remove(3); ==> 错误
4.1.5 Map<T1,T2>
保存形式key->value, key不允许重复
常用子类:
HashMap:无序排放,value不可重复
[java] view
plaincopy
Map<String,String> map = new HashMap<String, String>();
map.put("k1","v1");
map.<span style="background-color: rgb(255, 255, 153);">put</span>("k2","v2");
map.put("k3","v3");
String str = map.<span style="background-color: rgb(255, 255, 153);">get</span>("k3");
if(map.<span style="background-color: rgb(255, 255, 153);">containsKey</span>("k1")){
System.out.println("contains key");
}
if(map.<span style="background-color: rgb(255, 255, 153);">containsValue</span>("v3")){
System.out.println("contains value");
}
Set<String> keySet = map.<span style="background-color: rgb(255, 255, 153);">keySet</span>();
Iterator<String> iter = keySet.iterator();
while (iter.hasNext()){
System.out.println(iter.next());
}
Collection<String> lstValues = map.<span style="background-color: rgb(255, 255, 153);">values</span>();
iter = lstValues.iterator();
while (iter.hasNext()){
System.out.println(iter.next());
}
Hashtable:无序排放,value可以重复
相关文章推荐
- Objective-C 和 Core Foundation 对象相互转换的内存管理总结
- linux telnet连接两台内网机器No route to host
- HTTP GET的简单代码实现
- IOS自定义单选框
- Codeforces Round #336 (Div. 2)
- Codeforces Round #336 (Div. 2)
- QT生成的exe自动拷贝依赖的dll并打包的方法
- hdu 2602 Bone Collector(01背包)
- 粒子效果
- 判断https
- 手机自动化测试:Appium源码分析之跟踪代码分析四 1
- @@ERROR
- sql语句使用,内连接,外连接
- SVN提交版本时强制填写备注
- JavaScript密码复杂度
- 关于 myeclipse 中 java heap space的解决办法
- saltstack进阶
- 打开Domion 提示: 管理员ID过期
- JMeter——JMeter使用(1)
- Linux安装mysql.xxx.rpm