技术标签: # Jopic hashmap遍历 迭代器 Map遍历 hashmap
Map集合是我们几乎每天都要使用的集合类,但是其无法像数组那样直接遍历,而是通过迭代器来遍历。以下列举五种遍历方式,推荐使用第一种。
entrySet是 key-value
的集合,Set里面的类型是Map.Entry,就是存放Map中的某一对key-value,一般可以通过map.entrySet()得到。
entrySet实现了Set接口,里面存放的是键值对。一个K对应一个V。
即通过getKey()
得到K,getValue()
得到V
for-each 和 迭代器两种遍历
/**
* 【EntrySet】
* 通过Map.Entry(String,String)来映射结果集
* - 然后使用entry.getKey()获取到键
* - 通过entry.getValue()获取到值
*/
@Test
public void test1() {
Map<String, String> map = new HashMap<>();
map.put("张三", "内蒙古");
map.put("李四", "北京");
map.put("王五", "上海");
map.put("赵六", "杭州");
map.put("田七", "南京");
//增强for遍历
//entry.getKey()获取到键,通过entry.getValue()获取到值
for (Map.Entry<String, String> entry : map.entrySet()) {
System.out.println("key:" + entry.getKey() + " value:" + entry.getValue());
}
System.out.println("========================分割线==============================");
//迭代器遍历
Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<String, String> entry = it.next();
System.out.println("键key :" + entry.getKey() + " value :" + entry.getValue());
}
}
通过map.keySet()
获取key的结果集,Set里面的类型即key的类型
for-each 和 迭代器两种遍历
/**
* 【KeySet】: 将HashMap中的key取出放入到Set集合中,根据key映射value
* - 通过map.keySet()获取key
* - 通过key找到value
*/
@Test
public void test2() {
Map<String, String> map = new HashMap<>();
map.put("张三", "内蒙古");
map.put("李四", "北京");
map.put("王五", "上海");
map.put("赵六", "杭州");
map.put("田七", "南京");
//通过map.keySet()获取key, 通过key找到value
for (String key : map.keySet()) {
String value = map.get(key);
System.out.println("key:" + key + " value:" + value);
}
System.out.println("========================分割线==============================");
Iterator<String> iterator = map.keySet().iterator();
while (iterator.hasNext()) {
String key = iterator.next();
System.out.println(key);
System.out.println(map.get(key));
}
}
通过Map.Entry(String,String)
来映射结果集,然后使用entry.getKey()
获取到键,通过entry.getValue()获取到值
/**
* 【Lambda】
* JDLK8 后Map默认的迭代
*/
@Test
public void test3() {
Map<String, String> map = new HashMap<>();
map.put("张三", "内蒙古");
map.put("李四", "北京");
map.put("王五", "上海");
map.put("赵六", "杭州");
map.put("田七", "南京");
// key-value的类型省略
map.forEach((key, value) -> {
System.out.println("key:" + key + " value:" + value);
});
}
/**
* 【Streams API 单线程】
*/
@Test
public void test4() {
Map<String, String> map = new HashMap<>();
map.put("张三", "内蒙古");
map.put("李四", "北京");
map.put("王五", "上海");
map.put("赵六", "杭州");
map.put("田七", "南京");
map.put("贾七", "南京");
// 遍历
map.entrySet().stream().forEach((entry) -> {
System.out.println(entry.getKey());
System.out.println(entry.getValue());
});
}
Set集合分别获取key与value – key不能重复, key-value顺序不对应
/**
* 【Set集合分别获取key与value -- key不能重复, key-value顺序不对应】
* - 遍历map的键[]
* - 遍历map的值
*/
@Test
public void test5() {
Map<String, String> map = new HashMap<>();
map.put("张三", "内蒙古");
map.put("李四", "北京");
map.put("王五", "上海");
map.put("赵六", "杭州");
map.put("田七", "南京");
map.put("郑八", "南京");
//第三种只遍历键或者值,通过加强for循环
//遍历map的键
for (String key : map.keySet()) {
System.out.println("key: " + key);
}
//获取到 map的value集合
Collection<String> values = map.values();
for (String value : map.values()) {
System.out.println("value: " + value);
}
}
给定字符串s,找到s中最长的回文子字符串。您可以假设s的最大长度为1000。Input Output "" "" "abc" "a" "ababc" "bab" Method 1 建立两个循环, 遍历每个子字符串判断是否为palindromic1. 如果字符串为空则需要返回空2. 如果字符串没有回文,则需要返回第一个字母3. 如果后面的palindromic substring比之前的长度长, 需要替换掉之前的判断是否为回文用125题的方法, 将字
因为网站中用到了MySql.Data.dll这一引用,所以出现这样问题总是把眼光放在该控件引用的不当上。但是以前这种也是直接放在网站的Bin文件夹中,用的也是同样的控件,并没有其他操作。纠结了半天愣是没搞清楚问题出现在哪儿。突然发现项目的资源管理器出现了两行网站文件夹名字。第一行是项目名字,第二行怎么还有一个文件夹。才醒悟过来,原来是在保存文件的时候,在网站文件夹的外面又添加了一层...
A. Perfectly Imperfect Array多个完全平方数的乘积也是完全平方数。如要找到一个非空子序列的乘积不是完全平方数的话,只要原序列中存在非完全平方数即可。void solves(){ int n,po;cin>>n; int flag=0; while(n--){ cin>>po; int i=(int)sqrt(po); if(i*i!=po) flag=1; } cout<<(!flag ? "NO":"YES")<
snowflake的结构如下(每部分用-分开):0 - 0000000000 0000000000 0000000000 0000000000 0 - 00000 - 00000 - 000000000000第一位为未使用,接下来的41位为毫秒级时间(41位的长度可以使用69年),然后是5位datacenterId和5位workerId(10位的长度最多支持部署1024个节点) ,最后12位是...
下载镜像执行:docker pull solr:7.5.0启动Solr容器执行:docker run --name my-solr -d -p 8983:8983 -t solr:7.5.0访问Solr管理后台在浏览器中打开http://localhost:8983/solr/#/,即可进入solr管理界面新建SolrCore新建solrCore,名称为mycore,执...
第一步 安装VirtualBox1.去官网下载VirtualBox,VirtualBox官网链接2.点击下载3.选择版本4.傻瓜式安装第二步 安装Vagrant1.去官网下载官方网站地址2.验证是否安装成功,打开cmd 输入vagrant -v3.添加centos7.box文件,百度网盘下载百度云盘地址 ,https://pan.baidu.com/s/1U5OnOf1fOpYhJ5evwbKo_w 提取码 lmp94.添加centos7.box文件 打开cmd 输入vagrant
from selenium importwebdriverfrom selenium.webdriver.common.keys importKeysimporttimeimportrandomdefrun():#1 问卷填报日期driver.find_element_by_id('q1').click()driver.switch_to.frame('__calendarIframe')time...
登录 Skype for Business Online 时Microsoft Office Outlook连接到 Skype for Business Online 时出现问题"2021/4/9适用于:Skype for Business Online本文内容问题在运行 Outlook 的计算机上使用 Lync 2010 或 Lync 2013 登录 Skype for Business Onl...
Linux命令切换目录 cd显示一个目录下的文件和文件夹:lllsls -lls -a文件目录操作创建文件 vim touch创建目录 mkdir删除文件或目录 rm -rf 文件/文件夹移动文件或文件夹 mv 源文件 目标文件复制文件或文件夹 cp查看端口号: netstat查看正在运行的进程:ps aux修改权限:chmod动态查看一个日志文件:t...
【鸿蒙OS开发入门】18 - HDF驱动子系统:加速度计传感器 Driver层驱动代码分析
Annie的安装:Github地址:https://github.com/iawia002/annie1.安装ScoopScoop 的安装配置安装 Scoop 很简单,不过你需要先确定一些基础环境是否符合安装要求:Windows 版本不低于 Windows 7 Windows 中的 PowerShell 版本不低于 PowerShell 3 你能正常、快速的访问 GitHub 并下载上面的资源 你的 Windows 用户名为英文(Windows 用户环境变量中路径...
最近实现了一个http的接口 ~ http的方式,访问结果为json nginx做负载,web分离,url转发 ~tornado做数据操作和异步调用lua的接口 ~memcached做session的共享 (为啥不用redis做session,一方面是为了不和redis有kv冲突,服务器的中断冗余,更主要的方面是用redis存储session我没有做出来,郁闷呀。。。。)redis做kv数据库和队...