java集合之Map_keySet_entrySet
keySet()的使用:该方法返回的是一个key对象的Set<E>集合,通过该set集合的对象调用iterator方法返回一个迭代器,通过该迭代器可访问到set集合里面的key
再调用HashMap集合里面的get(Object key);方法即可得到key值
package collection;
import java.util.*;
public class MyMap2 {
public static void main(String[] args) {
Map<Person2,Contact2> m1 = new HashMap<Person2,Contact2>();
Person2 p1 = new Person2(123,"张三");
Person2 p2 = new Person2(12,"李四");
Contact2 c1 = new Contact2(13199898778l,"河南");
Contact2 c2 = new Contact2(15999898778l,"北京");
m1.put(p1, c1);
m1.put(p2, c2);
Set<Person2> set1 = m1.keySet();
Iterator<Person2> it1 = set1.iterator();
while(it1.hasNext()){
Person2 key = it1.next();
Contact2 value = m1.get(key);
System.out.println("key键:"+key);
System.out.println("value值:"+value);
}
}
}
class Person2 {
int id ;
String name;
public Person2(int id, String name) {
//super();
this.id = id;
this.name = name;
}
@Override
public String toString() {
return "Person2 [id=" + id + ", name=" + name + "]";
}
}
class Contact2{
long telephont;
String address;
public Contact2(long telephont, String address) {
//super();
this.telephont = telephont;
this.address = address;
}
@Override
public String toString() {
return "Contact2 [telephont=" + telephont + ", address=" + address + "]";
}
}
key键:Person2 [id=123, name=张三]
value值:Contact2 [telephont=13199898778, address=河南]
key键:Person2 [id=12, name=李四]
value值:Contact2 [telephont=15999898778, address=北京]
entrySet()的使用:返回此映射中包含的映射关系的set试图——jdk1.6
理解为返回Map.Entry<K,V>类的一个对象,K,V都是Map键值对中对应的属性,在Map.Entry中K又是该Map.Entry的一个属性,V也是Map.Entry的一个
属性.通过返回的对象调用迭代器,才能访问到Map.Entry<K,V>里面的元素。
代码如下:
package collection;
import java.util.*;
public class MyMap_entrySet2 {
public static void main(String[] args) {
Map m1 = new TreeMap();
Person5 p1 = new Person5(1332,"xiaoming");
Person5 p2 = new Person5(8332,"ahangsan");
Contact5 c1 = new Contact5(13172673363l,"广州");
Contact5 c2 = new Contact5(15172673363l,"杭州");
m1.put(p1, c1);
m1.put(p2, c2);
//System.out.println(m1);
Set<Map.Entry<Person5, Contact5>> map_entry = m1.entrySet();//获取Map.Entry的对象
Iterator<Map.Entry<Person5, Contact5>> it = map_entry.iterator();//获取迭代器
while(it.hasNext()){
Person5 p =it.next().getKey();//通过迭代器访问Map.Entry里面的元素
Contact5 c =(Contact5) m1.get(p);//key得到他的value
System.out.println(p);
System.out.println(c);
}
}
}
class Person5 implements Comparable {
int id ;
String name;
public Person5(int id, String name) {
//super();
this.id = id;
this.name = name;
}
public int compareTo(Object obj){
Person5 p4 = (Person5)obj ;
return this.name.compareTo(p4.name);//根据返回值,按照二叉树结构,进行存储。
} //P84《数据结构与算法分析java语言描述》佛罗里达国际大学
@Override
public String toString() {
return "Person5 [id=" + id + ", name=" + name + "]";
}
}
class Contact5{
long telephont;
String address;
public Contact5(long telephont, String address) {
//super();
this.telephont = telephont;
this.address = address;
}
@Override
public String toString() {
return "Contact5 [telephont=" + telephont + ", address=" + address + "]";
}
}
java集合之Map_keySet_entrySet的更多相关文章
- Java集合专题总结(1):HashMap 和 HashTable 源码学习和面试总结
2017年的秋招彻底结束了,感觉Java上面的最常见的集合相关的问题就是hash--系列和一些常用并发集合和队列,堆等结合算法一起考察,不完全统计,本人经历:先后百度.唯品会.58同城.新浪微博.趣分 ...
- Scala集合和Java集合对应转换关系
作者:Syn良子 出处:http://www.cnblogs.com/cssdongl 转载请注明出处 用Scala编码的时候,经常会遇到scala集合和Java集合互相转换的case,特意mark一 ...
- java集合你了解多少?
用了java集合这么久,还没有系统的研究过java的集合结构,今天亲自画了下类图,总算有所收获. 一.所有集合都实现了Iterable接口. Iterable接口中包含一个抽象方法:Iterator& ...
- 深入java集合学习1-集合框架浅析
前言 集合是一种数据结构,在编程中是非常重要的.好的程序就是好的数据结构+好的算法.java中为我们实现了曾经在大学学过的数据结构与算法中提到的一些数据结构.如顺序表,链表,栈和堆等.Java 集合框 ...
- Java集合框架List,Map,Set等全面介绍
Java集合框架的基本接口/类层次结构: java.util.Collection [I]+--java.util.List [I] +--java.util.ArrayList [C] +- ...
- Java集合框架练习-计算表达式的值
最近在看<算法>这本书,正好看到一个计算表达式的问题,于是就打算写一下,也正好熟悉一下Java集合框架的使用,大致测试了一下,没啥问题. import java.util.*; /* * ...
- 【集合框架】Java集合框架综述
一.前言 现笔者打算做关于Java集合框架的教程,具体是打算分析Java源码,因为平时在写程序的过程中用Java集合特别频繁,但是对于里面一些具体的原理还没有进行很好的梳理,所以拟从源码的角度去熟悉梳 ...
- Java 集合框架
Java集合框架大致可以分为五个部分:List列表,Set集合.Map映射.迭代器.工具类 List 接口通常表示一个列表(数组.队列.链表 栈),其中的元素 可以重复 的是:ArrayList 和L ...
- Java集合概述
容器,是用来装东西的,在Java里,东西就是对象,而装对象并不是把真正的对象放进去,而是指保存对象的引用.要注意对象的引用和对象的关系,下面的例子说明了对象和对象引用的关系. String str = ...
随机推荐
- BZOJ 3277 串 (广义后缀自动机)
3277: 串 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 309 Solved: 118 [Submit][Status][Discuss] De ...
- servlet 中字符集的处理
Servlet运行的步骤 Servlet作为Web服务器的补充功能在运行时需要受到Servlet容器的管理,其运行的流程如下: 浏览器依据IP建立与容器的连接 浏览器将请求数据打包 容器解析请求数据包 ...
- Hbase写数据,存数据,读数据的详细过程
Client写入 -> 存入MemStore,一直到MemStore满 -> Flush成一个StoreFile,直至增长到一定阈值 -> 出发Compact合并操作 -> 多 ...
- 火狐Firefox 浏览器 onblur() 并且alert()时文本被选中问题
说明:镜像是组成在线实验课程的基础环境,教师设计的实验绑定一个或多个镜像,就组成了一讲独立的在线实验课程. 镜像名称: 火狐Firefox 浏览器 onblur() 并且alert()时文本被 ...
- OSharp 学习(一)
OSharp3.0 由郭明峰组织开发,已经相对比较完整,从底层代码开始阅读难度比较大. 故采用自上而下的方式,使用到的时候再完善相关功能.希望通过此教程能够找到志同道合的人. 注:请勿抄袭 请参看OS ...
- log4c 编译安装简单小结(ubuntu12)
1 下载源码,解压 (假定解压到了当前用户的根目录下,位置是~/log4c-1.2.3) 2 编译安装log4c(指定--prefix极其重要,如果没有指定到/usr下会有一堆麻烦事,还有,不能按照他 ...
- 谁在唱衰PC?说出你的理由
在平板电脑的冲击下,PC真的衰落了吗?戴尔消费产品市场副总裁Raymond Wah给出了坚定的回答:“平板电脑没有办法代替PC”. 让他有如此底气做出这一判断的取决于两方面:一方面,PC(了解PC市场 ...
- poj2960 S-Nim
大意:有n堆石子,每堆石子个数已知,两人轮流从中取石子, 每次可取的石子数x满足x属于集合S(k) = {s1,s2,s3...sk-1},问先拿者是否有必胜策略? 裸nim,可以用记忆化搜索. #i ...
- 学习Haskell的一些资料
趣学Haskell指南: http://fleurer-lee.com/lyah/chapters.htm 对应的英文原文: http://learnyouahaskell.com/chapters ...
- C++字符串指针与字符数组的区别
今天发现这样一个问题 #include <iostream> using namespace std; int main() { ]; strcpy_s(ch1,");//编译通 ...