关于java中List、Set、Map的一些总结
来源:互联网 发布:户外运动装备 知乎 编辑:程序博客网 时间:2024/06/10 05:14
今天上班上午把任务做完,下午闲来无事研究了一下List、Set、Map三个集合接口首先List
List
List是Java中的一个接口,继承了Collection接口。它是一个有序集合,又称序列,允许存储重复元素。其实现类常用的有ArrayList、LinkedList等。ArrayList是实现了List接口的可变长数组。它的特点是add方法操作时间复杂度为分期常量时间(amortized constant time),意思即如果添加n个元素则耗时O(n),其它操作耗时则是线性时间。每个ArrayList都有个容量,即存放元素能力的大小。这个容量是list中元素个数。当添加新的元素时,这个容量也会自动添加,这需要消耗一定时间。如果要添加大量数据到ArrayList,可以先调用ensureCapacity操作,从而减少每次添加新元素容量自动调整的时间。
需要注意的是ArrayList并不是线程同步的。如果多个线程同时访问一个ArrayList实例,至少一个线程修改了其结构(添加或删除元素,或显式的调整了其大小,仅仅设置元素值并不属于结构修改),则会使程序进入不确定的状态。解决方式之一就是使用一个线程同步的对象来封装该ArrayList。或者也可以用Collections.synchronizedList来封装。
我写了一个小程序来测试三个接口遍历集合元素的结果
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class SetTest {
public static void main(String[] args) {
//set集合的创建和遍历
Set<Integer> set = new HashSet<Integer>();
set.add(1);
set.add(2);
// System.out.println(set.size());
Iterator<Integer> it = set.iterator();
while(it.hasNext()){
Integer i = it.next();
System.out.println(i);
}
//map
Map<String, Object> map = new HashMap<String, Object>();
map.put("1", 1);
map.put("2", 2);
for(Object obj : map.keySet()){
System.out.println(map.get(obj));
}
//list
List<String> list = new ArrayList<String>();
list.add("1");
list.add("2");
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
}
运行发现Set接口遍历后元素的顺序是2,1 list和map遍历结果都是1,2,当set中存在重复元素时,它会自动的去重比如一下代码
Set set = new HashSet();
set.add(1);
set.add(1);
System.out.println(set.size());
其运行结果是1
如果加入一个null
set.add(null);
结果是2
但是当再添加一个null元素时
set.add(null);
运行结果还是为2,由此说明set集合只允许一个null值,并且不允许重复的元素出现
- 关于java中List、Set、Map的一些总结
- 对于Java中Set、List、Map的一些总结
- java 中 set map table list ~~的总结
- java中set/map/list/vector 的总结
- java 中 set map table list 的总结
- java 中 set map table list ~~的总结
- java 中 set map table list 的总结
- java 中 Collection, List, Map, Set的总结
- java 中 set map table list ~~的总结
- java中set/map/list/vector 的总结
- java中set/map/list/vector 的总结
- java 中 set map table list ~~的总结
- java中List、Set、Map集合的遍历方法总结
- java中List、Set、Map集合的遍历方法总结
- java中List、Set、Map集合的遍历方法总结
- JAVA基础-Collection中List,Set,Map的比较总结
- Java中array、Set、List和Map的比较总结
- java中map,list一些知识点的总结
- C++ Virtual函数
- MTD应用学习:mtd和mtdblock的区别
- 多线程
- oracle对BLOB类型数据的操作与性能问题
- C++ map用法
- 关于java中List、Set、Map的一些总结
- property_get/ property_set/ atoi
- Oracle SQL优化 总结
- ffmpeg中的帧级并行解码
- C# 中如何区分鼠标的单击或双击事件
- Servlet 监听器
- ICTCLAS 中科院分词 在java上的实现demo
- Unity游戏开发之“屏幕截图”
- 使用CocoaPods(一)为项目配置第三方类库