一.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常用方法 iOS set集合类_System

集合set常用方法 iOS set集合类_数据类型_02

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

 

集合set常用方法 iOS set集合类_映射关系_03

二.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方法图

集合set常用方法 iOS set集合类_映射关系_04

集合set常用方法 iOS set集合类_System_05

 

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

集合set常用方法 iOS set集合类_映射关系_06

 

小结:

集合set常用方法 iOS set集合类_映射关系_07

集合set常用方法 iOS set集合类_数据类型_08

集合set常用方法 iOS set集合类_数据类型_09

集合set常用方法 iOS set集合类_数据类型_10

集合set常用方法 iOS set集合类_集合set常用方法 iOS_11