一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - java 中Map詳解及實例代碼

java 中Map詳解及實例代碼

2020-09-08 10:49Java教程網 Java教程

這篇文章主要介紹了java 中Map詳解及實例代碼的相關資料,需要的朋友可以參考下

Map接口

Map類似y(x)=x;這樣的函數(key對應x,value對應y)

Map與Collection并列存在。用于保存具有映射關系的數據:Key-Value

Map 中的 key 和 value 都可以是任何引用類型的數據

Map 中的 key 用Set來存放,不允許重復,即同一個 Map 對象所對應的類,須重寫hashCode()和equals()方法。

常用String類作為Map的“鍵”。

key 和 value 之間存在單向一對一關系,即通過指定的 key 總能找到唯一的、確定的 value。

Map接口

java" id="highlighter_789034">
1
2
3
4
5
6
7
8
丨---------HashMap:Map的主要實現類
 
 
丨---------TreeMap:按照添加進Map中的元素的key的指定屬性進行排序,要求:key必須是同一個類的對象!針對key:自然排序 vs 定制排序
 
丨---------Hashtable:是一個古老的實現類,線程安全,與HashMap不同,它不允許使用null作為key和value(不建議使用)(有多老!看命名就知道,連駝峰命名法都木有用上!哈哈哈哈哈!)
 
丨---------Properties:常用來處理屬性文件。鍵和值都為String類型的。(這兒你常用的配置文件就是)

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
public class TestMap{
 
/*
 *
 *Object put(Object key,Object value):向Map中添加一個元素
 *
 *Object remove(Object key):按照指定的key刪除此key-value對
 *
 *void putAll(Map t):
 *
 *void clear():清空
 *
 *Object get(Object key):獲取指定key的value值,若無此key則返回null
 *
 *boolean containsKey(Object key):
 *
 *boolean containsValue(Object value)
 *
 *int size()
 *  
 *boolean isEmpty()
 *
 *boolean equals(Object obj)
 *
 *HashMap:
 *1.key是用Set來存放的,不可重復,value是用Collection來存放的,可重復
 * 一個key-value對,是一個Entry,所有的Entry是用Set存放的,也是不可重復的。
 *2.向HashMap中添加元素時,會調用key所在類的equals()方法,判斷兩個key是否相同,若相同則只能夠添加進一個,則只能添加進后加的那個元素
 *
 */
 
//兩個put的key相同,輸出結果為后加進去的那個,所以輸出是value=87
 
  public void test1(){
 
    Map map = new HashMap();
    map.put("AA",213);
    map.put("BB",456);
    map.put("BB",45);//與上邊的key相同所以map中是這個
    map.put(123,"CC");
    map.put(null,null);
    map.put(new Person("xx",21),89);
    map.put(new Person("xx",21),87);//與上邊的key相同所以map中是這個
    System.out.println(map.size());
    map.remove("BB");
    System.out.println(map);
    Object value = map.get(123);
    System.out.println(value);
 
  }
  /*
 
   如何遍歷Map
   Set keySet()
   Collection values()
   Set entrySet()
 
  */
 
  @Test
  public void test2(){
 
    Map map = new HashMap();
    map.put("AA",213);
    map.put("BB",45);
    map.put(123,"CC");
    map.put(null,null);
    map.put(new Person("xx",21),89);
 
 
    //1.遍歷key集.此時打印輸出 null,AA,Person    //[name=DD,age=23],BB,123
    Set set = map.keySet();
    for(Object obj : set){
      System.out.println(obj);
    }
    //2.遍歷value集.此時打印輸出null,213,89,45,CC
    Collection values = map.values();
    Iterator i = values.iterator();
    while(i.hasNext()){
      System.out.println(i.next());
    }
    //3.如何遍歷key-value對
    //方式一
    Set set1 = map.keySet();
    for(Object obj1 : set1){
      System.out.println(obj + "----->" + map.get(obj));
 
    }
    //方式二
    Set set2 = map.entrySet();
    for(Object obj : set2 ){
      Map.Entry entry = (Map.Entry)obj;
      System.out.println(entry.getKey() + "---->" + entry.getValue());
    }
  }
 
 
  @Test
  public void testLinkedHashMap(){
 
    Map map = new LinkedHashMap();
    map.put("AA",213);
    map.put("BB",45);
    map.put(123,"CC");
    map.put(null,null);
    map.put(new Person("xx",21),89);
 
    Set set1 = map.keySet();
    for(Object obj1 : set1){
      System.out.println(obj + "----->" + map.get(obj));
    }
  }
 
  @Test
  public void testTreeMap(){
 
 
    //自然排序
    Map map = new TreeMap();
    map.put(new Person("AA",23),89);
    map.put(new Person("MM",22),79);
    map.put(new Person("BB",23),99);
    map.put(new Person("CC",13),69);
 
    Set set1 = map.keySet();
    for(Object obj1 : set1){
      System.out.println(obj + "----->" + map.get(obj));
    }
  }
 
 
  @Test
  public void testProperties(){
 
    Properties pros = new Properties();
    pros.load(new FileInputStream(new File(jdbc.properties )));
    String user = pros.getProperty("user");
    String password = pros.getProperty("password");
 
  }
}

<下面重點:>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
/*
 
  操作Collection以及Map的工具類:Collections
 
  面試題:區分Collection和Collections
 
  reverse(List):反轉List中元素的位置
  shuffle(List):對List集合元素進行隨機排序
  sort(List):
  sort(List,Comparator):
  swap(List,int,int):
 
 
 
 */
 
 
 
List list = new ArrayList();
list.add(123);
list.add(23);
list.add(33);
list.add(43);
list.add(53);
 
List list2 = new ArraysList();//若用list2當src來復制list集合則會報錯,出現數組越界,以為新定義的集合長度是0,而源集合長度是5,塞不進去
 
List list1 = Arrays.asList(new Object[list.size()]);//將數組作為list長度直接取
 
Collections.copy(list1,list);//調用工具類不用返回值
 
 
-----------------同步控制
 
synchronized()方法
 
  //通過如下的方法保證list的線程安全性。安全性高了但是效率低啊!
 
  List list2 = Collections.synchronizedList(list);
 
  System.out.println(list2);

 感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

原文鏈接:http://blog.csdn.net/s740556472/article/details/56489629

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 成人福利视频网址 | 成人免费影院 | 白发在线视频播放观看免费 | 国产丰满美女做爰 | 无遮挡免费h肉动漫在线观看 | 99久久久久国产 | zoomkool最新版 | hd性欧美俱乐部中文 | 91精品国产色综合久久不卡蜜 | 日本一区二区三区在线 观看网站 | 俺去啦最新 | 我的绝色岳每雯雯 | 久久久无码精品亚洲A片软件 | 日韩毛片在线视频 | 色悠久久久久综合欧美99 | 2021国产麻豆剧传媒剧情 | 女子监狱第二季未删减在线看 | 99精品国产久热在线观看66 | 国产网站免费在线观看 | 2021国产麻豆剧传媒剧情最新 | 任你操视频在线观看 | 亚洲天天综合 | 特级夫妻大片免费在线播放 | 成人免费毛片一区二区三区 | 天美视频在线 | 成人影院入口 | 五月色婷婷久久综合 | 日本道在线播放 | 免费一区二区视频 | 韩国理论三级在线观看视频 | 鸭子玩富婆流白浆视频 | 成人涩涩屋福利视频 | 嗯啊好大好粗 | 处女呦呦| 青青草99| 日韩网站在线观看 | 天使萌痴汉在线中文字幕 | 和直男装修工在工地啪 | leslessexvideos日本| 成人精品在线 | 亚洲国产午夜 |