- Collection是一个接口,只能存储引用类型,并且是单个存储。所有的集合都是可以迭代的。 集合的常用3种遍历方式:
ArrayList<String> list = new ArrayList<>();
list.add("stay");
list.add("with");
list.add("me");
System.out.println("使用迭代器遍历集合");
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
System.out.println("***********************");
System.out.println("使用for循环遍历集合");
int size = list.size();
for (int i = 0; i < size; i++) {
System.out.println(list.get(i));
}
System.out.println("***********************");
System.out.println("使用foreach循环遍历集合");
for (String str : list) {
System.out.println(str);
}
参考前辈的博客:https://blog.csdn.net/dengnanhua/article/details/64692191
记住如下总结:
(1)对于ArrayList和LinkedList,在size小于1000时,每种方式的差距都在几ms之间,差别不大,选择哪个方式都可以。
(2)对于ArrayList,无论size是多大,差距都不大,选择哪个方式都可以。
(3)对于LinkedList,当size较大时,建议使用迭代器或for-each的方式进行遍历,否则效率会有较明显的差距。
所以,综合来看,建议使用for-each,代码简洁,性能也不差。
另外,当效率不是重点时,应该在设计上花更多心思了。实际上,把大量对象放到List里面去,本身就应该是要考虑的问题。
2.List和Set继承自Collection接口
List接口:有序,存储进去什么顺序,取出就是什么顺序。元素可重复。
Set接口:无序,不可重复。
3.List体系接口
List下可分为3种集合类。ArrayList、LinkedList、Vector(工作中基本不用)---------这3个集合都是类
ArrayList:底层采用数组存储元素,适合查询,不适合频繁的随机增删元素。
LinkedList:底层采用双向链表数据结构存储数据;适合频繁的增删,不适合查询操作。
Vector:底层采用数组存储元素,但是线程安全的,效率较低,工作很少使用。
Set下可分为2种集合类。HashSet(哈希表/散列表)、SortedSet(接口)。
SortedSet是一个接口,TreeSet是它的实现类。特点:集合中元素不可重复;但是可以按照元素的大小进行排序(默认为从小到大排序)。
4.Map体系接口
Map<key,value> (接口): Map集合以键值对的方式存储元素,特点:无序不可键重复。(Map和Collection没有关系)
Map下有HashMap、Hashtable、SortedMap(接口)。
HashMap最为常用,常见HashMap遍历的3种方式;
HashMap<String, String> map = new HashMap<>();
map.put("a", "1");
map.put("b", "2");
map.put("c", "3");
System.out.println("******使用entrySet方式获取key,value******");
Set<Map.Entry<String, String>> entries = map.entrySet();
for (Map.Entry<String, String> entry : entries) {
System.out.println(entry.getKey());
System.out.println(entry.getValue());
}
System.out.println("******使用keySet方式获取key,再获取value******");
Set<String> keySet = map.keySet();
for (String key : keySet) {
System.out.println(key);
System.out.println(map.get(key));
}
System.out.println("******使用map.values()方式获取value******");
Collection<String> values = map.values();
for (String value:values) {
System.out.println(value);
}
Hashtable:线程安全,效率低 Properties集合继承Hashtable集合类:Properties集合特点:属性类,key/value形式存储元素,但是key/value只能是字符串。
SortedMap:一个接口,TreeMap实现SortedMap。特点:SortedMap中的key无序不可重复,但是key可以按照元素的大小顺序自动排序。SortedMap的key集合等同于SortedSet.