Map的keySet和entrySet

/*Map集合的两种 取出方式
 * 1、keySet()
 * 2、entrySet()
 * */

//定义一个学生类 重写了equals、hashcode三个方法,实现了comparable接口并覆盖comparato方法

package 集合;

public class Student implements Comparable<Student>{
    private String name;
    private int age;
    
    public Student(){}
    public Student(String name,int age){
        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 int hashCode() {
        
        return this.name.hashCode()+age*39;
    }
    
    @Override
    public boolean equals(Object obj) {
        if(!(obj instanceof Student))
            throw new ClassCastException("转换类型不匹配");
        Student student = (Student)obj;
        return this.name.equals(student.getName()) && this.age == student.getAge();
    }
    
    public int compareTo(Student stu) {
        int num = new Integer(this.age).compareTo(new Integer(stu.getAge()));
        if(num == 0)
            return this.name.compareTo(stu.getName());
        return num;
            
    }
    @Override
    public String toString() {
        return  name + age;
    }
    
}

//定义一个HashMAP类

import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class MapTest1 {

public static void main(String[] args) {
        HashMap<Student,String> hm = new HashMap<Student,String>();//不是treeMap调用不到comparato方法
        hm.put(new Student("aisi1",22), "上海");
        hm.put(new Student("disi2",24), "上海");
        hm.put(new Student("cisi4",21), "上海");
        hm.put(new Student("aisi3",25), "上海");
        
        
        //第一种取出方式 keyset
        Set<Student> keySet = hm.keySet();
        Iterator<Student> it = keySet.iterator();
        while(it.hasNext()){
            Student stu = it.next();
            String address = hm.get(stu);
            System.out.println(stu+":"+address);
        }
        System.out.println("===================");
        //第二种取出方式entrySet
        Set<Map.Entry<Student, String>> entrySet = hm.entrySet();
        Iterator<Map.Entry<Student,String>> it1 = entrySet.iterator();
        while(it1.hasNext()){
            Map.Entry<Student, String> me = it1.next();
            Student stu = me.getKey();
            String addr = me.getValue();
            
            System.out.println(stu+":"+addr);
        }
    }

}

时间: 2024-08-02 11:23:31

Map的keySet和entrySet的相关文章

JAVA之旅(二十二)——Map概述,子类对象特点,共性方法,keySet,entrySet,Map小练习

JAVA之旅(二十二)--Map概述,子类对象特点,共性方法,keySet,entrySet,Map小练习 继续坚持下去吧,各位骚年们! 事实上,我们的数据结构,只剩下这个Map的知识点了,平时开发中,也是能看到他的,所以还是非常值得去学习的一个知识点的,我们直接开车了 一.Map概述 泛型< k,v> 键值对,映射关系 基本特点 该集合存储键值对,是一对一对往里存,而且要保证键的唯一性 1.添加 put(key ,values) putAll() 2.删除 clear() remove(ob

map对象中keyset()和entryset()区别

Set<K> keySet() //返回值是个只存放key值的Set集合(集合中无序存放的) Set<Map.Entry<K,V>> entrySet() //返回映射所包含的映射关系的Set集合(一个关系就是一个键-值对),就是把(key-value)作为一个整体一对一对地存放到Set集合当中的. 下面通过例子看看: 一. keySet()方式. Map<String,String> map = new HashMap<String,String&g

map集合中value()、keySet()、entrySet()区别

在Map集合中 values():方法是获取集合中的所有的值----没有键,没有对应关系, KeySet():将Map中所有的键存入到set集合中.因为set具备迭代器.所有可以迭代方式取出所有的键,再根据get方法.获取每一个键对应的值. keySet():迭代后只能通过get()取key entrySet(): Set<Map.Entry<K,V>> entrySet() //返回此映射中包含的映射关系的 Set 视图. Map.Entry表示映射关系.entrySet():迭

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集合的keySet和entrySet

Set<Map.Entry<K,V>> entrySet() 返回此映射中包含的映射关系的 set 视图. Set<K> keySet() 返回此映射中包含的键的 set 视图. 举例说明 import java.util.*; import java.util.Map.Entry; public class Demo { public static void main(String[] args) { Map<Integer,String> map = n

HashMap中的keySet()和entrySet()

1.基本概述 Set<Map.Entry<K,V>> entrySet()  返回此映射中包含的映射关系的 set 视图. Set<K>              keySet()      返回此映射中包含的键的 set 视图. 2.效率分析 对于keySet其实是遍历了2次,一次是转为iterator,一次就从hashmap中取出key所对于的value.而entryset只是遍历了第一次,他把key和value都放到了entry中,所以就快了. 3.使用实例 pa

keyset与entryset

1.基本概述 Set<Map.Entry<K,V>> entrySet()  返回此映射中包括的映射关系的 set 视图. Set<K>              keySet()      返回此映射中包括的键的 set 视图. 2.效率分析 对于keySet事实上是遍历了2次,一次是转为iterator.一次就从hashmap中取出key所对于的value. 而entryset仅仅是遍历了第一次,他把key和value都放到了entry中,所以就快了. 3.使用举例

Map遍历效率 : entrySet &gt; keySet

1    //entrySet() 2     for (Entry<String, String> entry : map.entrySet()) { 3         String key = entry.getKey(); 4         String value = entry.getValue(); 5         System.out.println(key + " : " + value); 6     } 7      8     //上下对比 9

Map容器中keySet()、entrySet()

1.定义 keySet(): 返回的是只存放key值的Set集合,使用迭代器方式遍历该Set集合,在迭代器中再使用get方法获取每一个键对应的值.使用get方法获取键对应的值时就需要遍历Map集合,主要的差异就在此处. entrySet(): 返回的是存放了映射关系的Set集合(一个映射关系就是一个键-值对),就是把(key-value)作为一个整体一对一对地存放到Set集合当中的.然后使用迭代器方式遍历该Set集合就可以取出Map中存放的键值对. 原文地址:https://www.cnblog