java中重要的集合框架常用的几种遍历方式(java集合遍历的几种方法)
导语:Java中重要的集合框架常用的几种遍历方式
下面主要总结一下Java中重要的集合类,List和Map常用的几种遍历方式
首先上图一张,此图说明了集合类的主要关系(注意Map是不包含在Collection接口中的):
一、对List的几种遍历方式:
1.普通for循环的方式:
List<String> list=new ArrayList<String>();
list.add("ab");
list.add("c");
list.add("def");
for(int i=0;i<list.size();i++){
System.out.println(list.get(i));
}
2.foreach的方式:
List<String> list=new ArrayList<String>();
list.add("ab");
list.add("c");
list.add("def");
for(String str : list){
System.out.println(str );
}
3.把链表变为数组再遍历的方式:
List<String> list=new ArrayList<String>();
list.add("ab");
list.add("c");
list.add("def");
String[] array=new String[list.size()];
list.toArray(array);
for(String str : array){
System.out.println(str );
}
4.迭代器遍历的方式:
List<String> list=new ArrayList<String>();
list.add("ab");
list.add("c");
list.add("def");
Iterator<String> iter=list.iterator();
while(iter.hasNext())
{
System.out.println(iter.next());
}
二、对Map的几种遍历方式:
1.通过Map.keySet遍历的方式:
Map<String, String> map = new HashMap<String, String>();
map.put("1", "aaa");
map.put("2", "bbb");
map.put("3", "ccc");
Set<String> keySet = map.keySet();
for (String key : keySet()) {
System.out.println(key + map.get(key));
}
2.通过Map.entrySet遍历的方式:
Map<String, String> map = new HashMap<String, String>();
map.put("1", "aaa");
map.put("2", "bbb");
map.put("3", "ccc");
Set<Entry<String, String>> entrySet= map.entrySet();
for (Entry<String, String> entry : entrySet()) {
System.out.println(entry.getKey() + entry.getValue());
}
3.通过Map.entrySet使用iterator遍历的方式:
Map<String, String> map = new HashMap<String, String>();
map.put("1", "aaa");
map.put("2", "bbb");
map.put("3", "ccc");
Iterator<Map.Entry<String, String>> iter= map.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry<String, String> entry = iter.next();
System.out.println(entry.getKey() + entry.getValue());
}
4.通过Map.values()遍历所有的value,但不能遍历key的方式:
Map<String, String> map = new HashMap<String, String>();
map.put("1", "aaa");
map.put("2", "bbb");
map.put("3", "ccc");
for (String value : map.values()) {
System.out.println(value);
}
三、List、Set、Map下各类型的对比:
1.List和Set:
List: 元素有放入顺序,元素可重复,查找效率高,插入删除效率低;
Set: 元素无放入顺序,元素不可重复,(元素虽然无顺序,但元素在Set中的位置是由该元素的HashCode决定的,其位置其实是固定的),检索效率低,删除和插入效率高。
2.Arraylist、LinkedList和Vector:
Arraylist查询操作效率比LinkedList高;
插入和删除操作效率Arraylist比LinkedList低;
Vector是线程安全的(线程同步)。
3.HashSet和Treeset:
Treeset不允许放入null值;
HashSet不允许出现重复元素,允许包含null值,但只能放入一个null;
快速查找通常都应该使用HashSet;排序时,使用TreeSet。
4.HashMap、HashTable和TreeMap:
HashTable是线程同步的;
HashMap是非线程同步的,效率上比HashTable高,适用于插入、删除和定位元素;
HashMap允许空键值,而HashTable不允许;
TreeMap适用于按自然顺序或自定义顺序遍历键(key)。
免责声明:本站部份内容由优秀作者和原创用户编辑投稿,本站仅提供存储服务,不拥有所有权,不承担法律责任。若涉嫌侵权/违法的,请反馈,一经查实立刻删除内容。本文内容由快快网络小洁创作整理编辑!