Map示例代码

Map示例代码

User类:

package com.pzc.Map;

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 void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

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

    public String getCity() {
        return city;
    }

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

MapTest类:

package com.pzc.Map;

import java.nio.channels.AsynchronousChannel;
import java.util.*;

public class MapTest {

/**
 * 创建有四个user对象的list集合 并赋值给list常量*/
    private static final List<User> USERS = creat();
    public static List<User> creat(){
        User u1 = new User(1, "pzc", User.HAERBIN);
        User u2 = new User(2, "wyn", User.HAERBIN);
        User u3 = new User(3, "345", User.BEIJING);
        User u4 = new User(4, "456", User.BEIJING);
        List<User> users = new ArrayList<>();
        users.add(u1);
        users.add(u2);
        users.add(u3);
        users.add(u4);

        return users;
    }

    public static void main(String[] args) {

        //getMapStringKey();
        //getKeySet();
        
    }

    /**
     * 创建基本键值对;获取
     */
    private static void putMapBase() {


        HashMap<String,String> map = new HashMap<>();
        map.put("pzc","wyn");
        map.put("nlj","xkx");
        System.out.println(map.size());//获取map长度
        System.out.println(map.get("pzc"));//通过键获取值
        map.put("pzc","wyn1");
        System.out.println(map.get("pzc"));//发现值被覆盖
    }

    /**
     * 用forEach以集合中user对象的ID为key,user对象本身为value
     * size();get();
     * 指定的key没有value?
     */
    private static void getMap() {

        HashMap<Integer, User> map = new HashMap<>();
        for (User u : USERS) {
            map.put(u.getId(),u);
        }
        System.out.println(map.size());
        System.out.println(map.get(1).getCity());
        System.out.println(map.get(100).getCity());//如果取值key超出范围,
        // 编译没问题,运行会出错,因此一定要自己注意,可以用if判断

    }

    /**
     * 以城市名称为key,以居民为value
     * 每个城市住着多个人?
     */
    private static void putListValue() {

        List<User> hlist = new ArrayList<>();
        hlist.add(USERS.get(0));
        hlist.add(USERS.get(1));
        List<User> blist = new ArrayList<>();
        blist.add(USERS.get(2));
        blist.add(USERS.get(3));
        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.HAERBIN)) {
            System.out.println(u.getName());
        }

    }

    /**
     * 遍历User List集合,以城市名称为key,对应的居民集合为value自动分组。
     * 即,遍历的同时基于不确定的城市名称,创建对应集合,再分组
     */
    private static void putListValue2() {
        Map<String,List<User>> map = USERS.stream() //基于流的操作
                .collect(Collectors.groupingBy(User::getCity));

        for (User h : map.get(User.HAERBIN)) {
            System.out.println(h.getName());
        }
        System.out.println("==============");
        for (User b : map.get(User.BEIJING)) {
            System.out.println(b.getName());
        }

    }


    /**
     * 字符串key的特殊性
     */
    private static void getMapStringKey() {


        String n1 = new String("pzc");
        String n2 = new String("pzc");
        System.out.println(n1.equals(n2));  //ture
        System.out.println(n1==n2);   //false
        Map<String,String> map = new HashMap<>();
        map.put(n1,"123");
        map.put(n2,"456");
        System.out.println(map.size());// 结果为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();//将Map中所有的键存入到set集合中。
        for (int i : nMapKeys) {
            System.out.println(i);
        }
    }

 
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值