HashMap遍历

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

@


前言

提示:这里可以添加本文要记录的大概内容:

Hash Map的遍历以及如何在遍历中删除元素


提示:以下是本篇文章正文内容,下面案例可供参考

一、HashMap是什么?

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

二、使用步骤

1.引入库

代码如下(示例):

① forEach遍历方式
② 迭代器 Iterator方式
③ Java8的 lambda表达式
4、加ava8的 stream 单线程和多线程遍历

如果是只需要进行遍历的时候,推荐使用java8之后的
lambda表达式 stream多线程
如果需要遍历过程中删除 推荐使用entrySet迭代器

2.读入数据

public class Test {
	public static void main(String[] args) throws IOException {
		Map<Integer, Integer> map = new HashMap<Integer, Integer>();
		map.put(1, 10);
		map.put(2, 20);

1、 通过ForEach循环进行遍历

	// Iterating entries using a For Each loop
	for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
		System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
	}
 
}

}
2、 ForEach迭代键值对方式
如果你只想使用键或者值,推荐使用如下方式

	// 迭代键
	for (Integer key : map.keySet()) {
		System.out.println("Key = " + key);
	}
 
	// 迭代值
	for (Integer value : map.values()) {
		System.out.println("Value = " + value);
	}
}

}
3、使用带泛型的迭代器进行遍历

	Iterator<Map.Entry<Integer, Integer>> entries = map.entrySet().iterator();
	while (entries.hasNext()) {
		Map.Entry<Integer, Integer> entry = entries.next();
		// 遍历中删除元素 **************
		if(1.equals(entry.getKey())){
				entries.remove();
				continue;
		}
		System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
	}
}

}
4、使用不带泛型的迭代器进行遍历

	Iterator<Map.Entry> entries = map.entrySet().iterator();
	while (entries.hasNext()) {
		Map.Entry entry = (Map.Entry) entries.next();
		Integer key = (Integer) entry.getKey();
		Integer value = (Integer) entry.getValue();
		System.out.println("Key = " + key + ", Value = " + value);
	}
}

}
5、通过Java8 Lambda表达式遍历

	map.forEach((k, v) -> System.out.println("key: " + k + " value:" + v));
}

}

6、stream遍历 *****
下面是多线程遍历,单线程遍历没有.parallel()

		map.entrySet().stram().parallel().foreach((entry) -> {
			System.out.println(entry.getKey()+entry.getValue());
		}

输出


4.3.6 遍历 HashMap 集合几种方式

分别遍历 Key 和 Values

for (String key : map.keySet()) {
	System.out.println(key);
}
for (Object vlaue : map.values() {
	System.out.println(value);
}

使用 Iterator 迭代器迭代

Iterator<Map.Entry<String, Object>> iterator = map.entrySet().iterator();
while (iterator.hasNext()) {
    Map.Entry<String, Object> mapEntry = iterator.next();
    System.out.println(mapEntry.getKey() + "---" + mapEntry.getValue());
}

通过 get 方式(不建议使用)

Set<String> keySet = map.keySet();
for (String str : keySet) {
	System.out.println(str + "---" + map.get(str));
}

说明:

根据阿里开发手册,不建议使用这种方式,因为迭代两次。keySet 获取 Iterator一次,还有通过 get 又迭代一次,降低性能。

jdk8 以后使用 Map 接口中的默认方法:

default void forEach(BiConsumer<? super K,? super V> action)
// BiConsumer接口中的方法:
void accept​(T t, U u) 对给定的参数执行此操作。
参数
t - 第一个输入参数
u - 第二个输入参数

遍历代码:

HashMap<String,String> map = new HashMap();
map.put("001", "zhangsan");
map.put("002", "lisi");
map.forEach((key, value) -> {
    System.out.println(key + "---" + value);
});

总结

posted @   没有烦恼的猫猫  阅读(27)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示