栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java里常用的遍历

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java里常用的遍历

List 遍历
// 1.fori循环遍历
// 效率最高 也是java官方推荐的用法
for (int i = 0; i < list.size(); i++) {
	Integer a = list.get(i);
}
// 2.增强for循环
for (int i : list) {
	Integer a = i;
}
// 3.iterator 迭代器
for (Iterator iterator = list.iterator(); iterator.hasNext();) {
	Integer a = (Integer) iterator.next();
}

// while 循环写法
Iterator iterator = list.iterator();
while (iterator.hasNext()) {
	Integer a = (Integer) iterator.next();
}
// 4.lambda
// lambda 最慢不推荐 java8 lambda
list.forEach(item -> {
	Integer a = item;
});
// 5.stream foreach java8 特有
list.stream().forEach(item -> {
	Integer a = item;
});
		
// 6.parallelStream foreach java8 特有
list.parallelStream().forEach(item -> {
	Integer a = item;
});

List 删除元素

fori循环遍历
这种方式的问题在于,删除某个元素后,list的大小发生了变化,而你的索引也在变化,所以会导致你在遍历的时候漏掉某些元素。
这种方式可以用在删除特定的一个元素时使用,但不适合循环删除多个元素时使用

增强for循环
删除元素后继续循环会报错误信息ConcurrentModificationException,因为元素在使用的时候发生了并发的修改,导致异常抛出。
但是删除完毕马上使用break跳出,则不会触发报错

iterator 迭代器
iterator遍历可以正常的循环及删除。但要注意的是,使用iterator的remove方法,
如果用list的remove方法同样会报上面提到的ConcurrentModificationException错误

Iterator iterator = list.iterator();
while (iterator.hasNext()) {
	Integer a = (Integer) iterator.next();
	iterator.remove();
}

以上3中循环的总结:
(1)循环删除list中特定一个元素的,可以使用三种方式中的任意一种,但在使用中要注意上面分析的各个问题。
(2)循环删除list中多个元素的,应该使用迭代器iterator方式。

HashMap 遍历
// 1.迭代器 EntrySet
Iterator> entries = map.entrySet().iterator();
while (entries.hasNext()) {
	Map.Entry entry = entries.next();
	Integer key = entry.getKey();
	Integer value = entry.getValue();
}
// 2.迭代器 KeySet
Iterator iterator = map.keySet().iterator();
while (iterator.hasNext()) {
	Integer key = iterator.next();
	Integer value = map.get(iterator.next());
}
// 3.ForEach EntrySet 这是最常用的方式
for (Map.Entry entry : map.entrySet()) {
	Integer key = entry.getKey();
	Integer value = entry.getValue();
}
// 4.ForEach KeySet
for (Integer key : map.keySet()) {
	Integer key1 = key;
	Integer value = map.get(key1);;
}
// 5.Lambda
map.forEach((key, value) -> {
	Integer key1 = key;
	Integer value1 = value;
});
// 6.Streams API 单线程
map.entrySet().stream().forEach((entry) -> {
	Integer key = entry.getKey();
	Integer value1 = entry.getValue();
});
// 7.Streams API 多线程
map.entrySet().parallelStream().forEach((entry) -> {
	Integer key = entry.getKey();
	Integer value1 = entry.getValue();
});
for (Integer value : map.values()) {
	Integer value1 = value;
}
Iterator iteratorValues = map.values().iterator();
while (iteratorValues.hasNext()) {
	Integer value1 = iteratorValues.next();
}

HashMap 删除元素
		Iterator> iterator = map.entrySet().iterator();
		while (iterator.hasNext()) {
			Map.Entry entry = iterator.next();
			if (entry.getKey() == 1) {
				// 删除
				System.out.println("del:" + entry.getKey());
				iterator.remove();
			} else {
				System.out.println("show:" + entry.getKey());
			}
		}
		for (Map.Entry entry : map1.entrySet()) {
			if (entry.getKey() == 1) {
				// 删除
				System.out.println("del:" + entry.getKey());
				map1.remove(entry.getKey());
			} else {
				System.out.println("show:" + entry.getKey());
			}
		}
		map2.forEach((key, value) -> {
			if (key == 1) {
				System.out.println("del:" + key);
				map2.remove(key);
			} else {
				System.out.println("show:" + key);
			}
		});
		map2.keySet().removeIf(key -> key == 1);
		map2.forEach((key, value) -> {
		    System.out.println("show:" + key);
		});
		map2.entrySet().stream().forEach((entry) -> {
		    if (entry.getKey() == 1) {
		        System.out.println("del:" + entry.getKey());
		        map2.remove(entry.getKey());
		    } else {
		        System.out.println("show:" + entry.getKey());
		    }
		});
		map2.entrySet().stream().filter(m -> 1 != m.getKey()).forEach((entry) -> {
		    if (entry.getKey() == 1) {
		        System.out.println("del:" + entry.getKey());
		    } else {
		        System.out.println("show:" + entry.getKey());
		    }
		});
Set 循环
		Iterator it = set.iterator();
		while (it.hasNext()) {
			String str = it.next();
			System.out.println(str);
		}
		for (String str : set) {
			System.out.println(str);
		}
Property 遍历
            System.out.println("---------(方式一)------------");
            Set keys = properties.keySet();//返回属性key的集合
            for (Object key : keys) {
                System.out.println(key.toString() + "=" + properties.get(key));
            }
            System.out.println("---------(方式二)------------");
            Set> entrySet = properties.entrySet();//返回的属性键值对实体
            for (Map.Entry entry : entrySet) {
                System.out.println(entry.getKey() + "=" + entry.getValue());
            }
            System.out.println("---------(方式三)------------");
            Set p = properties.stringPropertyNames();
            for (String key : p) {
                System.out.println(key + "=" + properties.getProperty(key));
            }

            System.out.println("---------(方式四)------------");
            Enumeration e = properties.propertyNames();
            while (e.hasMoreElements()) {
                String key = (String) e.nextElement();
                String value = properties.getProperty(key);
                System.out.println(key + "=" + value);
            }


转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号