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

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

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

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

java 中Map詳解及實例代碼

2020-09-08 10:49Java教程網(wǎng) Java教程

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

Map接口

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

Map與Collection并列存在。用于保存具有映射關(guān)系的數(shù)據(jù):Key-Value

Map 中的 key 和 value 都可以是任何引用類型的數(shù)據(jù)

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

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

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

Map接口

java" id="highlighter_789034">
1
2
3
4
5
6
7
8
丨---------HashMap:Map的主要實現(xiàn)類
 
 
丨---------TreeMap:按照添加進Map中的元素的key的指定屬性進行排序,要求:key必須是同一個類的對象!針對key:自然排序 vs 定制排序
 
丨---------Hashtable:是一個古老的實現(xiàn)類,線程安全,與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來存放的,不可重復(fù),value是用Collection來存放的,可重復(fù)
 * 一個key-value對,是一個Entry,所有的Entry是用Set存放的,也是不可重復(fù)的。
 *2.向HashMap中添加元素時,會調(diào)用key所在類的equals()方法,判斷兩個key是否相同,若相同則只能夠添加進一個,則只能添加進后加的那個元素
 *
 */
 
//兩個put的key相同,輸出結(jié)果為后加進去的那個,所以輸出是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
 
  面試題:區(qū)分Collection和Collections
 
  reverse(List):反轉(zhuǎn)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當(dāng)src來復(fù)制list集合則會報錯,出現(xiàn)數(shù)組越界,以為新定義的集合長度是0,而源集合長度是5,塞不進去
 
List list1 = Arrays.asList(new Object[list.size()]);//將數(shù)組作為list長度直接取
 
Collections.copy(list1,list);//調(diào)用工具類不用返回值
 
 
-----------------同步控制
 
synchronized()方法
 
  //通過如下的方法保證list的線程安全性。安全性高了但是效率低啊!
 
  List list2 = Collections.synchronizedList(list);
 
  System.out.println(list2);

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲欧美久久一区二区 | 亚洲精品一区二区久久久久 | 久久精品亚洲热综合一本 | 岛国虐乳紧缚媚药调教 | 五月桃花网婷婷亚洲综合 | 日韩视频免费一区二区三区 | 久久精品麻豆国产天美传媒果冻 | 免费一级欧美片在线观免看 | 好看的亚洲视频 | 91大神精品| 日本中文字幕一区二区高清在线 | 国产精品99久久免费观看 | 免费在线观看网址入口 | 国产日韩视频一区 | 日本高清免费看 | 草草视频免费看 | 日本xxxxx69hd日本 | 天堂成人影院 | 67id人成观看免费 | 不良研究所地址一 | 轻轻操在线视频 | 国产精品久久久久久久久久久久久久 | 二次元美女互摸隐私互扒 | 亚洲色图综合网 | 国产51| 国内精品久久久久香蕉 | hd最新国产人妖ts视频 | 精久久| 日韩一级精品视频在线观看 | 白丝校花好湿好紧 | 久草在线福利资站免费视频 | zozo日本另类极品 | 无限好资源第一片免费韩国 | 免费看打屁股视频的软件 | 胸大的姑娘中文字幕视频 | 亚洲国产精品无圣光一区二区 | 2021小妲己永久回家地址 | 免费看视频高清在线观看 | 四虎国产精品免费久久久 | 亚洲视频在线免费观看 | 果冻传媒在线完整免费观 |