搜索
写经验 领红包
 > 财经

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)。

免责声明:本站部份内容由优秀作者和原创用户编辑投稿,本站仅提供存储服务,不拥有所有权,不承担法律责任。若涉嫌侵权/违法的,请反馈,一经查实立刻删除内容。本文内容由快快网络小洁创作整理编辑!