您的位置:首页 > 其它

使用Iterator(迭代器)来遍历容器的元素(List/Set/Map),总结遍历各种容器的方法

2019-08-11 20:36 399 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/weixin_44007988/article/details/99224971

使用Iterator(迭代器)来遍历容器的元素(List/Set/Map)
其中遍历Map的时候有两种方式,第一种是调用Map的entrySet()方法,返回的是一个Set<Map.Entry<xxx,xxx>> a = xx.entrySet(),然后使用for(Iterator<Map.Entry<xxx,xxx>> aa =a.iterator(),aa.hasNext()😉
{
Map.Entry<xxx,xxx> tmp = aa.next();
打印tmp
}
第二种方法就是调用Map.keySet()方法,返回一个Seta=xx.keyset(),然后使用for(Iterator aa = a.iterator(),aa.hasNext()😉 {
xxx tmp = aa.next();
打印tmp
}

package cn.com.collection;

import java.util.*;

public class TestIterator {
public static void main(String[] args) {
//testIteratorList();
//testIteratorSet();
testIteratorMap();
System.out.println("========");
testIteratorMap2();
}
public static void testIteratorList() {
List<String> list = new ArrayList<>();
list.add("小明");
list.add("小红");
list.add("小军");
for (Iterator<String> s = list.iterator(); s.hasNext(); ) {
String tmp = s.next();
System.out.println(tmp);
}
}
public static void testIteratorSet() {
Set<Integer> ss = new HashSet<>();
ss.add(1);
ss.add(2);
ss.add(3);
for (Iterator<Integer> a = ss.iterator(); a.hasNext() ;) {
Integer tmp = a.next();
System.out.println(tmp);
}
}
//遍历Map的第一种方法
public static void testIteratorMap() {
//map里面有entrySet()方法会返回一个Set集合,然后遍历Set集合
Map<Integer,String> map = new HashMap<>();
map.put(100,"小军");
map.put(200,"小红");
map.put(300,"小亮");
//System.out.println(map);
//调用Map的entrySet()方法 返回一个Set的集合
Set<Map.Entry<Integer,String>> aa=  map.entrySet();
for (Iterator<Map.Entry<Integer,String>> a = aa.iterator();a.hasNext(); ) {
Map.Entry<Integer,String> tmp = a.next();
System.out.println(tmp);
}
}
//遍历Map的第二种方法
public static void testIteratorMap2() {
Map<Integer,String> map = new HashMap<>();
map.put(1,"星期一");
map.put(2,"星期二");
map.put(3,"星期三");
//Map里面有keySet()方法获取key值,返回一个Set的集合,然后遍历Set

Set<Integer> aa= map.keySet();
for (Iterator<Integer> a = aa.iterator(); a.hasNext(); ) {
Integer tmp = a.next();
System.out.println(tmp+"---"+map.get(tmp));
}
}
}

下面是遍历集合的总结
遍历List有四种方法:for(),foreach(),Iterator()(一个是for(),一个是while())
方法一:for循环

for (int i = 0; i <list.size(); i++) {
String tmp = (String) list.get(i);
System.out.println(tmp);
}

方法二:增强for循环

for (String tmp :list) {
System.out.println(tmp);
}

方法三:使用Iterator()—for循环

for (Iterator a = list.iteraor(); a.hasNext();) {
String tmp = (String) a.next();
System.out.println(tmp);
}

方法四:使用Iterator()—while循环

Iterator a = list.iteraor();
while(a.hasNext()) {
Object o = a.next();
a.remove(); // 如果在遍历时,要删除集合中的元素,建议使用这种方式
System.out.println(o);
}

遍历Set有两种方法:foreach(),Iterator()
方法一:增强for循环

for (String tmp : set) {
System.out.println(tmp);
}

方法二:使用Iterator()

for (Iterator a = set.iterator(); a.hasNext() ; ) {
String tmp = (String) a.next();
System.out.println(tmp);
}

遍历Map有两张方法:使用keySet(),使用entrySet();
方法一:keySet()

Map<Integer,String> maps = new HashMap<>();
Set<Integer> a = maps.keySet();
for (Iterator<Integer> ite = a.iterator();ite.hasNext(); ) {
Integer tmp = ite.next();
System.out.println(tmp);
}

方法二:entrySet()

Map<Integer,String> maps = new HashMap<>();
Set<Map.Entry<Integer,String>> mm = maps.entrySet();
for (Iterator<Map.Entry<Integer,String>>nn = mm.iterator();nn.hasNext(); ) {
Map.Entry<Integer,String> tmp = nn.next();
System.out.println(tmp);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐