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

    一.Set接口

     1.Set集合由Set接口和Set接口的实现类组成。Set接口继承了Collection接口,因此包含Collection接口的所有方法。

        要使用Set集合,通常情况下需要声明为Set类型,然后通过Set接口的实现类来实例化。

        Set接口的实现类语法格式为:     Set<数据类型> 集合名=new 实现类<数据类型>();

        由于Set集合中的对象是无序的,遍历Set集合的结果与插入Set集合的顺序并不相同;并且Set没有索引,不保存重复值。

        Set接口的实现类常有HashSet和TreeSet类。

         语法格式为:       Set<数据类型> 集合名=new HashSet<数据类型>();

                                 Set<数据类型> 集合名=new TreeSet<数据类型>();

         HashSet:无序的集合,可以保存null;

         TreeSet:经过排序(元素内容的升序)的无序(添加的顺序)集合,不能保存null,内部调用了TreeMap。

     2.方法

        (1)add(数据);(2)清除:remove(对象),clear();(3)遍历:foreach,迭代器。

    Set接口的实现用法:

     1 package org.hanqi.array;
     2 
     3 import java.util.*;
     4 
     5 public class Test2 {
     6 
     7     public static void main(String[] args) {
     8 
     9         //哈希
    10         
    11         Set<String> s=new HashSet<String>();
    12         
    13         HashSet<String> s1=new HashSet<String>();
    14         
    15         if(s.add("a"))
    16         {
    17             System.out.println("保存a成功");
    18         }
    19         
    20         s.add("a");
    21         s.add("b");
    22         s.add("c");
    23         s.add("d");
    24         s.add("e");
    25         s.add("f");
    26         s.add("g");
    27     
    28         s.add(null);
    29         
    30         if(!s.add("a"))
    31         {
    32             System.out.println("保存a失败");
    33         }
    34         s.add("a");
    35         s.add("a");
    36         
    37         
    38         for(String t:s)
    39         {
    40             System.out.println(t);
    41         }
    42         
    43         System.out.println("s的size="+s.size());
    44         
    45         if(s.remove("b"))
    46         {
    47             System.out.println("移除成功");
    48         }
    49         else
    50         {
    51             System.out.println("移除失败");
    52         }
    53          
    54         System.out.println("s的size="+s.size());
    55         
    56         
    57         //迭代器
    58         Iterator<String> it=s.iterator();
    59         
    60         while(it.hasNext())
    61         {
    62             String t=it.next();
    63             
    64 //            if(t.equals("c"))
    65 //            {
    66 //            it.remove();
    67 //            }
    68 //            else
    69 //            {
    70 //                System.out.println(t);
    71 //            }
    72         }
    73         System.out.println("s的size="+s.size());
    74         
    75         
    76         
    77         System.out.println("TreeSet");
    78         
    79         Set<String> s2=new TreeSet<String>();
    80         
    81         s2.add("a");
    82         s2.add("f");
    83         s2.add("c");
    84         s2.add("b");
    85         s2.add("e");
    86         s2.add("d");
    87         s2.add("g");
    88     
    89         //s2.add(null);
    90         
    91         for(String t:s2)
    92         {
    93             System.out.println(t);
    94         }
    95         
    96         
    97     }
    98 
    99 }
    Set

    二.Map接口

        Map接口提供了将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。

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

        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类实例。

         语法格式为:         Map<key,value>  Map名=new 实现类<key,value>();

       3.方法

           (1)put(key,value)  添加;(2)get(key) 获取;(3)size()  长度;(4)移除:remove(key),clear();(5)判断:containsKey(key)  key是否存在,containsValue(value)  value是否存在;(6)遍历:KeySet()  Key的Set集合;foreach:for(Key  : KeySet){get(Key)}。

        4.Map方法图

    Map接口实现方法:

     1 package org.hanqi.array;
     2 
     3 import java.util.*;
     4 
     5 public class Test3 {
     6 
     7     public static void main(String[] args) {
     8 
     9 
    10         Map<String,String> m=new HashMap<String,String>();
    11 
    12         m.put("0533","淄博");
    13         m.put("0531","济南");
    14         m.put("0532","青岛");
    15         
    16         System.out.println("长度="+m.size());
    17         
    18         m.put("0534","青岛");
    19         
    20         m.put(null, null);
    21         
    22         //长度
    23         System.out.println("长度="+m.size());
    24         
    25         //根据key获取value
    26         System.out.println("0533="+m.get("0533"));
    27         
    28         
    29         //key是否存在
    30         if(m.containsKey("0533"))
    31         {
    32             System.out.println("key 0533 已存在");
    33         }
    34         //value是否存在
    35         if(m.containsValue("淄博"))
    36         {
    37             System.out.println("value 淄博 已存在");
    38         }
    39         
    40         //遍历
    41         for(String k:m.keySet())
    42         {
    43             System.out.println(k+"="+m.get(k));
    44         }
    45         
    46     }
    47 
    48 }
    Map

    小结:

  • 相关阅读:
    flash聊天接口文档
    javascript的灵活性
    控件呈现顺序(3)
    javascript弱类型语言
    javascript对象的易变形
    控件生命周期(1)
    看过的最好的js教程
    一个asp.net学习资源
    C#_WinForm捕获未处理的异常
    WebBrowser 加载网页
  • 原文地址:https://www.cnblogs.com/arxk/p/5265708.html
Copyright © 2011-2022 走看看