zoukankan      html  css  js  c++  java
  • 集合类Set、Map

    Set接口的常用方法

    Set集合由Set接口和Set接口的实现类组成的。Set接口继承了Collection接口,因此包含Collection接口的所有方法。Set接口中的常用方法如下图:

    由于Set集合中不允许存在重复值,因此可以使用Set集合中的addAll()方法,将Collection集合添加到Set集合中并除掉重复值。

    Set接口的实现类

    要使用Set集合,通常情况下需要声明为Set类型,然后通过Set接口的实现类来实例化。Set接口的实现类常用的有HashSet和TreeSet类。语法格式如下:

    Set<String>collSet=new HashSet<String>();

    Set<String>collSet2=new TreeSet<String>();

    由于Set集合中的对象是无序的,遍历Set集合的结果与插入Set集合的顺序并不相同。

    package org.hanqi.array;
    
    import java.util.*;
    
    public class Test2 {
    
        public static void main(String[] args) {
            
    //        int i;
    //        int[]m=new int[5];
    //        set<int>d=
            
            
            
            //哈希
            
            System.out.println("TreeSet");
            
            Set<String>s=new HashSet<String>();
            
            HashSet<String>s1=new HashSet<String>();
            
            if(s.add("a"))
            {
                System.out.println("保存a成功");
            }
            
            s.add("a");
            s.add("b");
            s.add("c");
            s.add("d");
            s.add("e");
            s.add("f");
            s.add("g");
            
            s.addAll(null);
            
            if(!s.add("a"))
            {
                System.out.println("保存a失败");
            }
            
            for(String t:s)
            {
                System.out.println(t+" ");
            }
            
            if(s.remove("k"))
            {
                System.out.println("移除成功");
            }
            else
            {
                System.out.println("移除失败");
            }
            
            System.out.println("s的size"+s.size());
            
            Iterator<String>it=s.iterator();
            
            while(it.hasNext())
            {
                String t=it.next();
                
                if(t.equals("c"))
                {
                    it.remove();
                }
                else
                {
                    System.out.println(t);
                }
            }
            System.out.println("s的size"+s.size());
            
            
            
            System.out.println("TreeSet");
            
            Set<String>s2=new TreeSet<String>();
            s2.add("b");
            s2.add("a");
            s2.add("c");
            s2.add("g");
            s2.add("e");
            s2.add("f");
            s2.add("d");
            
            for(String t:s2)
            {
                System.out.println(t+" ");
            }
            
    
        }
    
    }
    TreeSet、HashSet

     HashSet可以保存null,TreeSet不可以保存null,并且内部调用了TreeMap。

    Map接口的常用方法

    Map接口提供了将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射一个值。Map接口中同样提供了集合的常用方法,如clear()、isEmpty()、size()等除此之外还包括下图所示的常用方法

    由于Map集合中的元素是通过key、value进行存储的,要获取集合中指定的key值或value值,需要先通过相应的方法获取key集合或value集合,再遍历key集合或value集合获取指定值。

     Map接口的实现类

    Map接口常用的实现类有HashMap和TreeMap。通常建议使用HashMap实现类实现Map集合,因为由HashMap类实现的Map集合对于添加和删除映射关系效率更高。HashMap是基于哈希表的Map接口实现的,HashMap通过哈希码对其内部的映射关系进行快速查找;由HashMap类实现的Map集合对于添加或删除映射关系效率较高;而TreeMap中的映射关系存在一定的顺序,如果希望Map集合中的对象存在一定的顺序,应该使用TreeMap类实现Map集合。

     1.HashMap类

    该类基于哈希表的 Map接口的实现,此实现提供所有可选映射操作,并允许使用null值和null键,但必须保证键的唯一性。 HashMap通过哈希码对其内部的映射关系进行快速查找。此类不保证映射的顺序,特别是不保证该顺序恒久不变。

    2.TreeMap类

    该类不仅实现了Map接口,还实现了java.util.SortedMap接口,因此集合中的映射关系具有一定的顺序。但在添加、删除和定位映射关系上,TreeMap类比HashMap类的性能差一些。由于TreeMap类实现的Map集合中的映射关系是根据键对象按照一定的顺序排列的,因此不允许键对象是null。

    可以通过HashMap类实例化Map集合,当需要顺序输出时,再创建一个完成相同映射关系的TreeMap类实例。

    package org.hanqi.array;
    
    import java.util.*;
    
    public class Test3 {
    
        public static void main(String[] args) {
            
            Map<String, String>m=new HashMap<String, String>();
            
            m.put("0533", "淄博");
            m.put("0531", "济南");
            m.put("0532", "青岛");
            
            System.out.println("长度="+m.size());
            
            m.put("0534", "青岛");//值可以重复,键不能重复
            
            m.put(null, null);
            
            //长度
            System.out.println("长度="+m.size());
            //取出
            System.out.println("0533="+m.get("0533"));
            
            //key是否存在
            if(m.containsKey("0533"))
            {
                System.out.println("key 0533 已存在");
            }
            //value是否存在
            if(m.containsValue("淄博"))
            {
                System.out.println("value 淄博 存在");
            }
            
            //遍历
            for(String k:m.keySet())
            {
                System.out.println(k+"="+m.get(k));
            }
            
    
        }
    
    }
    HashMap、TreeMap

  • 相关阅读:
    leetcode 189. Rotate Array 数组旋转 ---------- java
    Google test Problem A. Country Leader
    leetcode 187. Repeated DNA Sequences 求重复的DNA串 ---------- java
    mysql忘记密码(未初始化)
    leetcode 186. Reverse Words in a String II 旋转字符数组 ---------- java
    CSS3属性transform详解之(旋转:rotate,缩放:scale,倾斜:skew,移动:translate)(转载)
    bootstrap
    bootstrap使用中遇到的问题(二)
    兼容ie8 rgba()用法
    浏览器前缀
  • 原文地址:https://www.cnblogs.com/cycanfly/p/5267131.html
Copyright © 2011-2022 走看看