• Map 常用的方法事例


    package com.hu.Map;

    import static org.junit.Assert.*;

    import java.awt.RenderingHints.Key;
    import java.util.Collection;
    import java.util.HashMap;
    import java.util.Map;
    import java.util.Map.Entry;
    import java.util.Set;

    import org.junit.Test;

    import com.hu.cool.Person;

    public class TestMap {

    @Test
    public void test() {
    /*Collection接口
    * Map接口
    * |------------HashMap Map的主要实现类
    * |------------LinkedHashMap
    * |------------TreeMap
    * |------------Hashtable
    * ----properties
    *
    */
    Map map=new HashMap();
    //Object put(Object Key ,object value)向map中添加一个元素
    map.put("aa", 123);
    map.put(123, "aa");
    map.put("bb", 456);
    map.put(null, null);
    System.out.println(map.size());
    //hashMap Tree是由set存放的不能够重复,所以如果重复的key是存放不进去的
    //value是由Collection来存放的,可以重复;而一个key value对是一个Entry所有entru 是有set存放不可重复
    //如果有两个相同的值,则相当于更新用新的代替旧的。

    map.remove(null);//按照某个key的值进行删除
    System.out.println(map);
    Object val=map.get("aa");
    System.out.println(val);
    }
    @Test
    public void test2(){
    /*
    * 如何遍历Map
    * Set keyset()
    * Collection Values()
    * Set entryset()
    *
    */
    Map map=new HashMap();
    map.put("aa", 123);
    map.put(123, "aa");
    map.put("bb", 456);
    map.put(null, null);
    map.put(new Person("AA", 18), "Myu");

    //1,遍历key
    Set set=map.keySet();
    for(Object obj:set){
    System.out.println(obj);
    }
    //2,遍历value
    Collection collection=map.values();
    for (Object object : collection) {
    System.out.println(object);
    }
    //3,遍历entry
    //方法一:如何遍历key-value对
    Set set2=map.keySet();
    for(Object object:set2){
    System.out.println(object+"---------->"+map.get(object));
    }
    //实现遍历的方法二
    Set set3=map.entrySet();
    for(Object object:set3){
    Map.Entry entry=(Entry)object;
    System.out.println(entry);
    }

    }

    }

    ***********************************************************

    LInkedhashset()的使用

    @Test
    public void test3(){
    //linkedhashset 遍历的时候按照插入的顺序来遍历,但是插入删除的时候速度普遍比较慢因为还要维护链表
    Map map=new LinkedHashMap();
    map.put("123", "AA");
    map.put(45, "BB");
    map.put("cu", 45);

    Set set=map.entrySet();

    for(Object object:set){
    Map.Entry entry=(Entry) object;
    System.out.println(object);
    }
    }

    *************************************************

    @Test
    public void testding(){
    Comparator comparator=new Comparator() {

    @Override
    public int compare(Object o1, Object o2) {
    if(o1 instanceof Person2 && o2 instanceof Person2){
    Person2 p1=(Person2) o1;
    Person2 p2=(Person2) o2;
    Integer i=p1.getAge().compareTo(p2.getAge());
    return i;
    }
    return 0;
    }
    };
    Map map=new TreeMap(comparator);
    map.put(new Person2("muYongyuan", 14), 99);
    map.put(new Person2("anyue", 13), 110);
    map.put(new Person2("guangxin", 15), 93);
    map.put(new Person2("peng", 12), 114);

    Set set=map.entrySet();
    for(Object object:set){
    Map.Entry entry=(Map.Entry)object;
    System.out.println(entry);
    }
    }

    *************************************************

    compareTo()放大调用的时候必须是对象类型的。

  • 相关阅读:
    Docker安装
    Shell编程
    Java:字节流和字符流(输入流和输出流)
    spring中的组合模式
    MySQL:ALTER COLUMN、MODIFY COLUMN 和 CHANGE COLUMN
    springboot项目打包docker镜像maven插件
    OGNL表达式
    项目中redisTemplate设置的key,redis客户端上查询不到的问题
    spring-session-data-redis反序列化问题
    深入理解SPI机制
  • 原文地址:https://www.cnblogs.com/afterhours/p/6141067.html
Copyright © 2020-2023  润新知