激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 爽爽视频免费看 | 777zyz色资源站在线观看 | 国产乱淫av | 在线观看国产免费视频 | 视频一区二区三区在线 | 黄色免费高清网站 | 黄污免费网站 | 免费看污视频在线观看 | 久久精品女人天堂av | 国产一级不卡毛片 | 天天看天天摸天天操 | 自拍偷拍亚洲图片 | 精品二区在线观看 | 国产一区精品视频 | 素人视频在线观看免费 | 久草在线高清 | 亚洲综合精品 | 特级西西444www大精品视频免费看 | 九九热视频免费 | 一级毛片电影网 | 一区二区三区四区在线 | 久久久精品精品 | 国产免费视频一区二区裸体 | 伦一区二区三区中文字幕v亚洲 | 国产一区国产二区在线观看 | 91精品观看91久久久久久国产 | 最近中文字幕一区二区 | 精品不卡| 曰韩毛片| chinese-xvideos| 久久一本日日摸夜夜添 | 色阁五月| 国产激情网| 亚洲欧洲日韩av | 激情大乳女做爰办公室韩国 | 亚洲99影视一区二区三区 | 黄色淫片| 丰满年轻岳中文字幕一区二区 | 水卜樱一区二区av | 亚洲无马在线观看 | av国产免费 |