Java---29---Map中元素的两种取出方式

Map中是没有迭代器的,那么Map中的元素是如何取出的呢?

有两种方法:

一种是通过Set <k> keySet ()

一种是通过 Set <Map.Entry<k,v>> entrySet ()

keySet:: 将map中所有的键存入到Set集合中。在通过map的getKey ()方法即可获得 value的值

entrySet: 返回此映射中包含的映射关系的Set视图。既包含键也包含值。 这个映射关系的数据类型就是Map.Entry.

public class MapDemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		keySet_method();
		entrySet_method();
	}

	public static void entrySet_method() {
		Map<String, String> map = new HashMap<String, String>();

		map.put("01", "a5");
		map.put("02", "a1");
		map.put("03", "a2");
		map.put("04", "a3");
		map.put("05", "a4");

		Set<Map.Entry<String, String>> entryset = map.entrySet();

		Iterator<Map.Entry<String, String>> it = entryset.iterator();

		while (it.hasNext()) {
			Map.Entry<String, String> me = it.next();

			String key = me.getKey();
			String value = me.getValue();

			System.out.println("key : " + key + "    Value : " + value);
		}
	}

	public static void keySet_method() {
		Map<String, String> map = new HashMap<String, String>();

		map.put("01", "a5");
		map.put("02", "a1");
		map.put("03", "a2");
		map.put("04", "a3");
		map.put("05", "a4");

		Set<String> keyset = map.keySet();

		Iterator<String> it = keyset.iterator();

		while (it.hasNext()) {
			// 获取键
			String key = it.next();

			String value = map.get(key);
			System.out.println("key : " + key + "    Value : " + value);
		}

	}

}

存入自定义元素,通过两种方式来取出:

class Stu implements Comparable<Stu> {
	private String name;
	private int age;

	public Stu(String name, int age) {
		super();
		this.name = name;
		this.age = age;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	@Override
	public boolean equals(Object obj) {
		// TODO Auto-generated method stub
		if (!(obj instanceof Stu))
			throw new ClassCastException("不是本类的对象");
		Stu s = (Stu) obj;
		return this.name.equals(s.name) && this.age == s.age;
	}

	@Override
	public int hashCode() {
		// TODO Auto-generated method stub

		return name.hashCode() + age * 27;
	}

	public int compareTo(Stu o) {
		// TODO Auto-generated method stub

		Integer num = new Integer(this.age).compareTo(new Integer(o.age));

		if (num == 0)
			return this.name.compareTo(o.name);

		return num;
	}

}

public class MapDemo2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Map<Stu, String> map = new HashMap<Stu, String>();

		map.put(new Stu("01", 10), "beijing");
		map.put(new Stu("02", 9), "shanghai");
		map.put(new Stu("03", 8), "huangzhou");
		map.put(new Stu("04", 15), "tianjin");

		Set<Stu> keySet = map.keySet();

		Iterator<Stu> it = keySet.iterator();
		while (it.hasNext()) {
			Stu key = it.next();
			String value = map.get(key);

			System.out.println("key : " + key.getName() + "---" + key.getAge()
					+ "    Value : " + value);
		}
		/*************************************************/
		Set<Map.Entry<Stu, String>> entrySet = map.entrySet();

		Iterator<Map.Entry<Stu, String>> iterator = entrySet.iterator();

		while (iterator.hasNext()) {
			Map.Entry<Stu, String> me = iterator.next();

			Stu key = me.getKey();
			String value = me.getValue();

			System.out.println("key : " + key.getName() + "---" + key.getAge()
					+ "    Value : " + value);
		}
	}

}
时间: 2025-01-13 21:47:33

Java---29---Map中元素的两种取出方式的相关文章

Map集合的两种取出方式(keySet、entrySet)

/* * map集合的两种 取出方式:(map没有迭代器方法) *     1.Set<k> keySet:将map中的所有的键存入到Set集合,因为Set具备 迭代器. *         所以可以迭代方式取出所有的键,再根据get方法,获取每一个键对应的值. *         Map集合的取出原理:将map集合转成set集合,再通过迭代器取出 *     2.Set<Map.Entry<k,v>> entrySet:将map集合中的映射关系存入到set集合中, *

Map集合的两种取出方式

Map集合有两种取出方式, 1.keySet:将Map中的键存入Set集合,利用set的迭代器来处理所有的键 举例代码如下: import java.util.*; class Test { public static void main(String[] args) { Map<String, Integer> map = new HashMap<String, Integer>(); map.put("fan", 23); map.put("pen

Springboot中IDE支持两种打包方式,即jar包和war包

Springboot中IDE支持两种打包方式,即jar包和war包 打包之前修改pom.xml中的packaging节点,改为jar或者war    在项目的根目录执行maven 命令clean package -Dmaven.test.skip=true,即可打包,如下 命令执行成功后,在target目录下即可看到打包好的文件 提示:若打的包为jar包,可通过java -jar guns-xxx.jar来启动Guns系统 原文地址:https://www.cnblogs.com/mracale

Java中String的两种赋值方式的区别

本文修改于:https://www.zhihu.com/question/29884421/answer/113785601 前言:在java中,String有两种赋值方式,第一种是通过"字面量"赋值,如:String str="hello",第二种是通过new关键字创建新对象,如:String str=new String("hello").那么这两种赋值的方式到底有什么区别呢,下面给出具体分析. 1.首先回顾Java虚拟机的结构图. 在上面的

Android中BroadcastReceiver的两种注册方式(静态和动态)详解

今天我们一起来探讨下安卓中BroadcastReceiver组件以及详细分析下它的两种注册方式. BroadcastReceiver也就是"广播接收者"的意思,顾名思义,它就是用来接收来自系统和应用中的广播.在Android系统中,广播体现在方方面面,例如当开机完成后系统会产生一条广播,接收到这条广播就能实现开机启动服务的功能:当网络状态改变时系统会产生一条广播,接收到这条广播就能及时地做出提示和保存数据等操作:当电池电量改变时,系统会产生一条广播,接收到这条广播就能在电量低时告知用户

Java中异常的两种处理方式

异常处理的两种方式: 声明抛出 throws  声明抛出的位置:是在方法声明的位置上使用throws关键字向上抛出异常. 捕捉 try....catch.. public class ExceptionTest03{     public static void main(String[] args){     //创建文件输入流读取文件     //思考:java编译器是如何知道以下的代码执行过程中可能出现异常,     //java编译器是如何知道这个异常发生的几率比较高呢?    //ja

从Java源码看String的两种比较方式

String的两种字符串比较方式 == 和 equals方法 ==: ==比较的是字符串在内存中的地址 代码示例: 1 public class EqualsDemo { 2 3 /** 4 * @param args 5 */ 6 public static void main(String[] args) { 7 String s1 = "String"; 8 String s2 = "String"; 9 String s3 = new String(&quo

ANDROID中FRAGMENT的两种创建方式

fragment是Activity中用户界面的一个行为或者是一部分.你可以在一个单独的Activity上把多个Fragment组合成为一个多区域的UI,并且可以在多个Activity中再使用.你可以认为fragment是activity的一个模块零件,它有自己的生命周期,接收它自己的输入事件,并且可以在Activity运行时添加或者删除. 两个概念:Fragment.宿主 fragment的生命周期直接受其宿主activity的生命周期的影响.例如,一旦activity被暂停,它里面所有的fra

java 序列化 serialVersionUID 的作用 和 两种添加方式

serialVersionUID适用于Java的序列化机制.简单来说,Java的序列化机制是通过判断类的serialVersionUID来验证版本一致性的.在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体类的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常,即是InvalidCastException. serialVersionUID有两种显示的生成方式:        一是默认的1