Java集合Collection遍历方法总结
集合类的通用遍历方式, 用迭代器迭代:
Iterator it = list.iterator();
while(it.hasNext()) {
Object obj = it.next();
}
Map遍历方式:
1、通过获取所有的key按照key来遍历
//Set<Integer> set = map.keySet(); //得到所有key的集合 for (Integer in : map.keySet()) { String str = map.get(in);//得到每个key多对用value的值 }
2、通过Map.entrySet使用iterator遍历key和value
Iterator<Map.Entry<Integer, String>> it = map.entrySet().iterator(); while (it.hasNext()) { Map.Entry<Integer, String> entry = it.next(); System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue()); }
3、通过Map.entrySet遍历key和value,推荐,尤其是容量大时
for (Map.Entry<Integer, String> entry : map.entrySet()) { //Map.entry<Integer,String> 映射项(键-值对) 有几个方法:用上面的名字entry //entry.getKey() ;entry.getValue(); entry.setValue(); //map.entrySet() 返回此映射中包含的映射关系的 Set视图。 System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue()); }
4、通过Map.values()遍历所有的value,但不能遍历key
for (String v : map.values()) { System.out.println("value= " + v); }
List遍历方式:
第一种:
for(Iterator iterator = list.iterator();iterator.hasNext();){ int i = (Integer) iterator.next(); System.out.println(i); }
第二种:
Iterator iterator = list.iterator(); while(iterator.hasNext()){ int i = (Integer) iterator.next(); System.out.println(i); }
第三种:
for (Object object : list) { System.out.println(object); }
第四种:
for(int i = 0 ;i<list.size();i++) { int j= (Integer) list.get(i); System.out.println(j); }
https://www.cnblogs.com/leskang/p/6031282.html
遍历Collection集合中的6种方法:
package com.qls.traverse; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Enumeration; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Stack; /** * 下面是遍历Collection的几种方法,以List接口为例: * @author 秦林森 * */ public class ListTest { public static void main(String[] args) { // TODO Auto-generated method stub String[] s="sixi is one of the most beautiful villages in china".split(" "); List<String> list = Arrays.asList(s); /** * 第一种方法用增强for循环。(这里List之所以能用增强for循环其原因在于它实现了Iterable接口) */ for(String str:list){ System.out.print(str+" "); } System.out.println(); System.out.println("************"); /** * 第二种方法用Iterator */ Iterator<String> it = list.iterator(); while(it.hasNext()){ String next = it.next(); System.out.print(next+" "); } System.out.println(); System.out.println("************"); /** * 第三种方法主要针对LinkedList。因为LinkedList 既有栈(stack)的特点,又有队列(Queue) * 的特点。所以遍历LinkedList中的元素。根据stack和queue,可以进行相关的遍历。 * 遍历的方法如下所示: */ //Using linkedList as a stack LinkedList<String> list2=new LinkedList<>(list);//创建一个LinkeList包含list中的全部元素。 while(!list2.isEmpty()){ System.out.print(list2.removeFirst()+" "); } System.out.println(); System.out.println("************"); /** * Using linkedList as a queue */ LinkedList<String> list3=new LinkedList<>(list); while(list3.peek() != null){ System.out.print(list3.poll()+" "); } System.out.println(); System.out.println("************"); /** * 第四种方法把所有的Collection都可以当做Enumeration进行遍历 * Collections.enumeration(c) */ ArrayList<String> list4=new ArrayList<>(list); Enumeration<String> e = Collections.enumeration(list4); while(e.hasMoreElements()){ System.out.print(e.nextElement()+" "); } /**第五种方法 * 当然还有其他方法如: */ System.out.println(); System.out.println("************"); for(int i=0;i<list4.size();i++){ System.out.print(list4.get(i)+" "); } System.out.println(); System.out.println("************"); /**第六种方法: *再如: */ while(!list4.isEmpty()){ int index=0; System.out.print( list4.remove(index++)+" "); } /** * 备注:在List接口中的所有实现类中最常用的是ArrayList LinkedList * ArraList比LinkedList的速度快,一般情况下选中ArrayList的情况比LinkedList多。 * 在ArrayList源码中有一个serialVersionUID,这个数字保证了, * 写入文件(ObjectOutputStream.writeObject(Object)) * 读取文件(ObjectInputStream.readObject())可以顺利进行, * 并且指明这个数字,可以保持各个版本的兼容性。有利于文件传输。 */ } }/*Output: sixi is one of the most beautiful villages in china ************ sixi is one of the most beautiful villages in china ************ sixi is one of the most beautiful villages in china ************ sixi is one of the most beautiful villages in china ************ sixi is one of the most beautiful villages in china ************ sixi is one of the most beautiful villages in china ************ sixi is one of the most beautiful villages in china *///:~
2. List遍历
List的遍历方法主要有以下几种:
- 普通for循环遍历
- 增强for循环遍历
- 迭代器Iterator遍历
- 结合for循环和Iterator遍历
- lambada表达式遍历
下面一个示例说明一下List的遍历方法
package Collection; import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class ListTraverse { public static void main(String[] args) { //创建List List<String> list = new ArrayList<String>(); list.add("Java"); list.add("Python"); list.add("C++"); list.add("C"); list.add("Golang"); //使用普通for循环遍历List for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } //使用增强for循环遍历 for (String str: list) { System.out.println(str); } //使用迭代器Iterator遍历 Iterator<String> iterator = list.iterator(); while (iterator.hasNext()){ System.out.println(iterator.next()); } //结合for循环和Iterator遍历 for ( Iterator<String> iterator1 = list.iterator();iterator1.hasNext();){ System.out.println(iterator1.next()); } //使用lambada表达式遍历 list.forEach(str -> System.out.println(str)); } }
3. Set遍历
Set遍历一般有以下两种方法:
- 迭代器Iterator遍历
- 增强for循环遍历
下面一个示例说明一下Set的遍历方法:
package Collection; import java.util.HashSet; import java.util.Iterator; import java.util.Set; public class SetTraverse { public static void main(String[] args) { Set<String> set = new HashSet<String>(); set.add("Java编程思想"); set.add("算法导论"); set.add("数据结构与算法"); //使用迭代器Iterator遍历 Iterator<String> iterator = set.iterator(); while (iterator.hasNext()){ System.out.println(iterator.next()); } //使用增强for循环遍历 for (String str: set) { System.out.println(str); } } }
3. Map遍历
Map遍历一般有以下四种方法:
使用hashMap.entrySet循环:
使用Iterator遍历
使用hashMap.keySet()/hashMap.values/Iterator
使用hashMap.keySet()/forEach遍历
下面以一个示例说明Map的遍历方法:
————————————————
版权声明:本文为CSDN博主「Anseong」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_42155910/article/details/109136194
package Collection; import java.util.*; public class MapTraverse { public static void main(String[] args) { Map<String,String> map = new HashMap<>(); map.put("name","张三"); map.put("age","18"); map.put("sex","male"); //使用hashMap.entrySet()循环 for (Map.Entry<String,String> entry:map.entrySet()){ System.out.println(entry.getKey() + "----->" + entry.getValue()); } //使用Iterator遍历 Iterator<Map.Entry<String,String>> iterator = map.entrySet().iterator(); while (iterator.hasNext()){ Map.Entry<String,String> entry = iterator.next(); System.out.println(entry.getKey() + "----->" + entry.getValue()); } //使用hashMap.keySet()/hashMap.values/Iterator Set<String> strings = map.keySet(); Collection<String> values = map.values(); for (Iterator<String> iterator1 = strings.iterator();iterator1.hasNext();) { String key = iterator1.next(); String value = (String) map.get(key); System.out.println(key + "----->" + value); } for (Iterator i = values.iterator(); i.hasNext();) { String s = (String) i.next(); System.out.println(s); } //使用hashMap.keySet()/forEach遍历 Set<String> keys = map.keySet(); for (String key :keys){ System.out.println(key + "----->" + map.get(key)); } } }