笔记27--Set、Map、List
来源:互联网 发布:js菜单栏展开收缩切换 编辑:程序博客网 时间:2024/04/29 13:11
说点额外的:
List<T>中的元素可以是null也可以是"",而String为null时调用其方法会报异常。
一、介绍
Collection:最基本的集合接口,一个Collection代表一组Object,即Collection的元素。
1、List:是列表(接口),可以出现重复值,是有序的(即可通过下标访问)。继承自Collection接口。
实现类:
1)ArrayList:由数组实现的List。允许对元素快速随机访问,但是向list中间插入与移除元素的速度很慢。
2)LinkedList:对顺序访问进行了优化,向list中间插入与删除时速度较快,随机访问速度较慢。
3)Vector:与ArrayList区别是:基于线程安全的,但不如ArrayList效率高。其他区别用再了解。
2、Set:是集合,不允许出现重复值。继承自Collection接口。
实现类:
1)HashSet:底层由HashMap实现。
2)LinkedHashSet
3、Map:Map未继承Collection接口,其内容是一组key-value映射。
实现类:
1)HashMap:非线程安全,高效、支持value为null。
2)HashTable:线程安全,低效、不支持value为null。
3)LinkedHashMap
二、增删改查及包含
1、对list:
增:add(位置, 元素)/add(元素) 删:remove() 改:set() 查:get() 包含:contains()
2、对set:Set<String> set=new HashSet<String>();
增:add(元素) 删:remove() 改:不能直接改,可先删再加 查:HashSet无顺序,所以取不到指定位置的值 包含:contains()
3、对map
增:put() 删:remove() 改:put() 覆盖原值 查:get() 包含:containsKey()、containsValue()
三、遍历
1、对list:
第一种:
Iterator itr = list.iterator();
while (itr.hasNext()) {
Object nextObj = itr.next();
}
这种方式在循环过程中会进行数据锁定, 性能稍差, 同时,如果你想在寻欢过程中去掉某个元素,只能调用it.remove方法, 不能list.remove方法, 否则一定出并发访问的错误.
第二种:for(A a : list) {
.....
}
内部调用第一种, 换汤不换药, 这种循环方式还有其他限制, 不建议使用它
第三种:
for(int i=0; i<list.size(); i++) {
A a = list.get(i);
...
}
内部不锁定, 效率最高, 但是当写多线程时要考虑并发操作的问题!
2、对set:
1)迭代遍历:
Set<String> set = new HashSet<String>();
Iterator<String> it = set.iterator();
while (it.hasNext()) {
String str = it.next();
System.out.println(str);
}
2)for循环遍历:
for (String str : set) {
System.out.println(str);
}
优点还体现在泛型 假如 set中存放的是Object
Set<Object> set = new HashSet<Object>();
for循环遍历:
for (Object obj: set) {
if(obj instanceof Integer){
int aa= (Integer)obj;
}else if(obj instanceof String){
String aa = (String)obj
}
........
}
3、对map:
Map map = new HashMap();
Iterator iter = map.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry entry = (Map.Entry) iter.next();
Object key = entry.getKey();
Object val = entry.getValue();
}
- 笔记27--Set、Map、List
- set /list/ map 使用 学习笔记
- hibernate学习笔记(map,set,list映射)
- Android笔记六.List+Set+Map
- List,Set,Map学习笔记(1)
- java学习笔记4.13,List,Set,Map
- List,set,Map
- Set、List、Map区别
- Set List Map总结
- List,Map,Set,容器
- map list set 区别
- List , Map . Set 类
- 关于set,list,map
- Set,Map,List
- JAVA---List,Map,Set
- map set list 区别
- List Set Map
- list set map区别
- 论平淡的幸福背后——为了自己的幸福,算不算是一种自私的行为?
- 测试PHP连接MYSQL
- DSP/BIOS简介
- 设计模式-策略模式
- 第四次工业革命
- 笔记27--Set、Map、List
- 关于记忆
- 8.2 成员函数的重载、覆盖与隐藏
- 解决Fragment在Activity中OnActivityResult()回调冲突问题
- apache的ajp均衡ProxyPass的高级配置
- NDK开发环境搭建_r8
- uml类图:继承、实现、依赖、关联、聚合、组合的联系与区别
- 随机数是骗人的,.Net、Java、C为我作证
- C++对象中数据成员的布局