• Java中Map和Vector集合



    Map集合

    map集合的使用

    package pkg2020华南虎;
    
    import java.util.HashMap;
    import java.util.Map;
    
    /**
     *
     * @author yl
     */
    /*双列集合:
    Map:实现Map接口的集合类,具备的特点:存储的数据都是以键值对的方式,键不可以重复,
    值可以重复。
     */
    public class MapDemo {
    
        public static void main(String[] args) {
            Map<String, String> map = new HashMap<String, String>();
            //添加常用方法
            map.put("1", "aaa");
            map.put("2", "bbb");
            map.put("3", "ccc");
    
            //输出aaa
            System.out.println(map.put("1", "aaa"));
    
            //这里返回null:表示4这个键以前没有关联的值
            System.out.println(map.put("4", "ddd"));
            System.out.println("集合元素:" + map);
    
            //这里输出关联的值ddd,会被abc覆盖???
            System.out.println(map.put("4", "abc"));
    
            map.put("5", "abc");
    
            Map<String, String> map2 = new HashMap<String, String>();
            map2.put("6", "eee");
            map2.put("1", "aaa");
            map2.put("1", "ert");//重写?
            map.putAll(map2);//???
            System.out.println("map:" + map);
            System.out.println("map2:" + map2);
    
            //删除数据常用方法
            System.out.println("删除的数据" + map.remove("1"));
            System.out.println("map:" + map);
            map.clear();
            System.out.println("map:" + map);
    
            //获取方法
            System.out.println(map.get("1"));
            System.out.println(map.size());
    
            //判断的方法
            System.out.println(map.containsKey("1"));
            System.out.println(map.containsValue("aaa"));
            map.clear();
            map.put(null, null);
            System.out.println(map.isEmpty());
    
            System.out.println("集合元素:" + map);
        }
    
    }  

    结果:

    run:
    aaa
    null
    集合元素:{1=aaa, 2=bbb, 3=ccc, 4=ddd}
    ddd
    map:{1=ert, 2=bbb, 3=ccc, 4=abc, 5=abc, 6=eee}
    map2:{1=ert, 6=eee}
    删除的数据ert
    map:{2=bbb, 3=ccc, 4=abc, 5=abc, 6=eee}
    map:{}
    null
    0
    false
    false
    false
    集合元素:{null=null}
    成功构建 (总时间: 0 秒)
    

    HashMap的使用

    package pkg2020华南虎;
    
    import java.util.HashMap;
    import java.util.Map;
    
    /**
     *
     * @author yl
     */
    /*
    HashMap:
    底层使用hash表来实现
    向HashMap中添加元素的时候,首先调用键的hashCode方法得到元素的哈希码的值,经过
    运算,得到该元素在哈希表中的位置;
    1.如果该位置没有存储元素,则元素之间添加到哈希表中
    2.如果该位置有其他的元素,会调用元素的equals方法,如果返回false,该元素被储存,
    返回true,该元素重复不能存储。
     */
    class Person01 {
    
        private int id;
        private String name;
    
        public Person01(int id, String name) {
            this.id = id;
            this.name = name;
        }
    
        @Override
        public String toString() {
            return "[编号:" + this.id + ";姓名:" + this.name + "]";
        }
    
        @Override
        public int hashCode() {
            return this.id;
        }
    
        @Override
        public boolean equals(Object obj) {
            Person01 p = (Person01) obj;
            return this.id == p.id;
        }
    
    }
    
    public class HashMapDemo {
    
        public static void main(String[] args) {
            Map<Person01, String> map = new HashMap<Person01, String>();
            map.put(new Person01(1, "a"), "aaa");
            map.put(new Person01(2, "b"), "bbb");
            map.put(new Person01(3, "c"), "ccc");
            map.put(new Person01(1, "a"), "ddd");
            System.out.println("集合的元素:" + map);
        }
    }  

    结果:

    run:
    集合的元素:{[编号:1;姓名:a]=ddd, [编号:2;姓名:b]=bbb, [编号:3;姓名:c]=ccc}
    成功构建 (总时间: 0 秒)
    

      

    TreeMap的使用

    package pkg2020华南虎;
    
    import java.util.Comparator;
    import java.util.TreeMap;
    
    /**
     *
     * @author yl
     */
    /*
    TreeMap:基于二叉树的数据结构实现的,会对具备自然特性的键进行排序存储
    1.元素的键具备自然特性,直接排序存储
    2.不具备自然特性,实现Comparable接口,在CompareTo中定义排序规则
    3.不具备自然特性,没有实现Comparable接口,在创建TreeMap对象的时候传入比较器
     */
    class Emp/*implements Comparable<Emp>*/ {
    
        String name;
        int salary;
    
        public Emp(String name, int salary) {
            this.name = name;
            this.salary = salary;
        }
    
        @Override
        public String toString() {
            return "[姓名:" + this.name + ";薪水:" + this.salary + "]";
        }
        /*@Override
    
       public int compareTo(Emp o) {
    
          return this.sarlary-o.sarlary;
    
       }*/
    }
    
    class MyComparator implements Comparator<Emp> {
    
        @Override
        public int compare(Emp o1, Emp o2) {
            return o1.salary - o2.salary;
        }
    }
    
    public class TreeMapDemo {
    
        public static void main(String[] args) {
            //创建一个比较器
            MyComparator my = new MyComparator();
            TreeMap<Emp, String> map = new TreeMap<Emp, String>(my);
            /*map.put('c', 3);
    
          map.put('b', 2);
    
          map.put('a', 1);*/
            map.put(new Emp("a", 5000), "6");
            map.put(new Emp("b", 4000), "5");
            map.put(new Emp("c", 3000), "4");
    //下面e的值1就会覆盖d的值3
            map.put(new Emp("d", 2000), "1");
            System.out.println(map);
        }
    
    }
    

    结果:

    run:
    {[姓名:d;薪水:2000]=1, [姓名:c;薪水:3000]=4, [姓名:b;薪水:4000]=5, [姓名:a;薪水:5000]=6}
    成功构建 (总时间: 0 秒)
    

      

    Vector集合

    package pkg2020华南虎;
    
    import java.util.Enumeration;
    import java.util.Vector;
    
    /**
     *
     * @author yl
     */
    public class VectorDemo {
    
        /*
        Vector底部维护Object数组,实现和ArrayList一样,但是Vector是线程安全,效率低,
        两者比较:
        相同点:
        1.底部都是维护Object的数组
        不同点:
        1.ArrayList线程不同步,效率高
        2.ArrayList JDK1.2出现,Vector JDK1.0出现
         */
        public static void main(String[] args) {
            Vector v = new Vector();
            v.addElement("Spring1");
            v.addElement("Spring2");
            v.addElement("Spring3");
            Enumeration e = v.elements();
            while (e.hasMoreElements()) {
                System.out.println(e.nextElement());
            }
        }
    }
    

      

    结果:

    run:
    Spring1
    Spring2
    Spring3
    成功构建 (总时间: 0 秒)
    

    什么他妈的叫他妈的惊喜!
  • 相关阅读:
    C#:类的学习
    SilverLight xaml页面跳转方法
    C#对象生命周期(转载)
    jquery常用的方法
    关于Java日期简单应用
    Compilingphpwithcrypt()
    SSI使用详解
    实例解析:从IIS的ASP迁移到APACHE的PHP
    三步搞定phpwind的静态化部署
    Informix Dynamic Server 中的分布式事务
  • 原文地址:https://www.cnblogs.com/2020yl/p/12291742.html
Copyright © 2020-2023  润新知