Java入门与基础实例2(工具包2 map映射)

Posted 晨沉宸辰

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java入门与基础实例2(工具包2 map映射)相关的知识,希望对你有一定的参考价值。

package demo;
public class User {
    public static final String HAERBIN = "哈尔滨";
    public static final String BEIJING = "北京";
    private int id;
    private String name;
    private String city;
    public User() {
    }
    public User(String name) {
        this.name = name;
    }
    public User(int id, String name, String city) {
        this.id = id;
        this.name = name;
        this.city = city;
    }
    public int getId() {
        return id;
    }

    public String getCity() {
        return city;
    }

    public void setId(int id) {
        this.id = id;
    }

    public void setCity(String city) {
        this.city = city;
    }

    public String getName() {
        return name;
    }

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


import java.util.*;

public class MapTest {
    private static final List<User> USERS = create();

    private static List<User> create() {
        User u = new User(1, "BO", User.HAERBIN);
        User u1 = new User(2, "SUN", User.BEIJING);
        User u2 = new User(3, "ZHANG", User.BEIJING);
        User u3 = new User(4, "LIU", User.HAERBIN);
        List<User> users = new ArrayList<>();
        users.add(u);
        users.add(u1);
        users.add(u2);
        users.add(u3);
        return users;
    }

    public static void main(String[] args) {
        //putMapBase();
        //getMap();
         //putListValue();
       getMapStringKey();
    }

    /**
     * 创建基本键值对;获取
     */
    private static void putMapBase() {
        Map<String, String> map = new HashMap<>();
        map.put("BO", "956");
        map.put("SUN", "925");
        System.out.println(map.size());
        System.out.println(map.get("BO"));
        map.put("BO", "1201");
        System.out.println(map.get("BO"));
        /*2
        956
        1201*/
    }

    /**
     * 以集合中user对象的ID为key,user对象本身为value
     * size();get();
     * 指定的key没有value?
     */
    private static void getMap() {
        Map<Integer, User> map = new HashMap<>();
        for (User u : USERS) {
            map.put(u.getId(), u);
        }
        System.out.println(map.size());//4
        System.out.println(map.get(1).getCity());//哈尔滨
        System.out.println(map.get(100).getCity());//出错
    }

    /**
     * 以城市名称为key,以居民为value
     * 每个城市住着多个人?
     */
    private static void putListValue() {
        List<User> hList = new ArrayList<>();
        hList.add(USERS.get(0));
        hList.add(USERS.get(3));
        List<User> bList = new ArrayList<>();
        bList.add(USERS.get(1));
        bList.add(USERS.get(2));
        Map<String, List<User>> map = new HashMap<>();
        map.put(User.HAERBIN, hList);
        map.put(User.BEIJING, bList);
        System.out.println(map.size());
        //先建立一个集合储存哈尔滨的人,然后在建立 储存在北京的
        //然后建立一个映射可以是 城市,值是集合
        for (User u : map.get(User.BEIJING)) {
            System.out.println(u.getName());
        }//输出北京城市的值
       /* 2
        SUN
        ZHANG
        */
    }

    /**
     * 遍历User List集合,以城市名称为key,对应的居民集合为value自动分组。
     * 即,遍历的同时基于不确定的城市名称,创建对应集合,再分组
     */
    private static void putListValue2() {

    }

    /**
     * 字符串key的特殊性
     */
    private static void getMapStringKey() {
        String n = new String("BO");
        String n2 = new String("BO");
        System.out.println(n.equals(n2));//比较值是不是相同的
        System.out.println(n == n2);//比较是不是一个对象
        Map<String, String> map = new HashMap<>();
        map.put(n, "956");
        map.put(n2, "925");
        System.out.println(map.size());//会认为是一个对象
       /*true
        false
        1*/
        
        //String重写了hashcode()方法、equals()方法,直接基于字符值比较,而非hash比较
    }

    private static void getKeySet() {
        User user = new User(1, "BO", "哈尔滨");
        User user2 = new User(2, "SUN", "北京");
        User user3 = new User(3, "ZHANG", "上海");
        Map<Integer, User> uMap = new HashMap<>();
        uMap.put(user.getId(), user);
        uMap.put(user2.getId(), user2);
        uMap.put(user3.getId(), user3);
        Set<Integer> nMapKeys = uMap.keySet();
        for (int i : nMapKeys) {
            System.out.println(i);
        }
    }

    /**
     * Map不支持foreach语句
     */
    private static void remove() {
        Map<Integer, User> uMap = new HashMap<>();
        for (User u : USERS) {
            uMap.put(u.getId(), u);
        }
        uMap.remove(1);
        System.out.println(uMap.size());
    }
}

以上是关于Java入门与基础实例2(工具包2 map映射)的主要内容,如果未能解决你的问题,请参考以下文章

Python入门之经典函数实例——第3关:Map-Reduce - 映射与归约的思想

Python入门之经典函数实例——第3关:Map-Reduce - 映射与归约的思想

java lambda 有效实例(结合List,Map数据结构)

java lambda 有效实例(结合List,Map数据结构)

java lambda 有效实例(结合List,Map数据结构)

Java入门与基础(工具包实例1list集合)