Map接口
Map集合是使用兩個列來存儲數據,存儲的每個元素都包含了兩個數據(鍵和值),所以map中的一個元素就是一個鍵值對;
特點:
1.Map每個元素由鍵與值兩部分組成 2.Map鍵不能重複,每個鍵對應一個值 3.鍵和值可以爲null
*要想得到每個鍵值對中的value,必須通過key得到。
常用的實現類:
HashMap:使用Hadh表存儲數據;
LinkedHashMap: 是用鏈表+Hash表存儲數據;
2.HashMap類
先看map中的方法;
創建Map類型的對象,調用裏面的方法:
Map map=new HashMap();
常用方法:
查API
3.遍歷Map集合的方式:
1.第一種方式:Set<K> keySet();
1.先得到key的集合;
Set<String>keySet=map.keySet();
2.遍歷key的集合,得到每一個key;
for(String key:keySet){
3.通過key得到value;
String value=map.get(key);
2.第二種方式:
1.先得到鍵值對的關係的集合;
Set<Entry<String,String>>entrySet=map.entrySet();
2.遍歷鍵值對的關係的集合,得到每個鍵值對的關係的對象;
for(Entry<String,String>entry:entrySet){
3.通過鍵值對的關係對象,得到鍵和值;
String key=entry.getKey();
String value=entry.getValue();
4.HashMap存儲自定義類型鍵值
三國演義:
曹操
劉備
孫權
水滸傳:
宋江
武松
門慶哥
西遊記:
孫悟空
八戒
白骨精
把這電視劇的中角色分類存儲在map集合中;按照電視劇的名字分類;
分析:
1.使用三個ArrayList集合分別存儲三個電視劇中的角色;
2.使用電視劇的名字作爲key,在map中存儲三類角色;
代碼:
public class HashMapDemo {
public static void main(String[] args) {
ArrayList<String> list1 = new ArrayList<String>();
ArrayList<String> list2 = new ArrayList<String>();
ArrayList<String> list3 = new ArrayList<String>();
list1.add("曹操");
list1.add("劉備");
list1.add("孫權");
list2.add("宋江");
list2.add("武松");
list2.add("門慶哥");
list3.add("孫悟空");
list3.add("八戒");
list3.add("白骨精");
Map<String, ArrayList<String>> map = new HashMap<String, ArrayList<String>>();
map.put("三國演義", list1);
map.put("水滸傳", list2);
map.put("西遊記", list3);
Set<Entry<String, ArrayList<String>>> entrySet = map.entrySet();
for (Entry<String, ArrayList<String>> entry : entrySet) {
String key = entry.getKey();
System.out.println(key);
ArrayList<String> value = entry.getValue();
for (String name : value) {
System.out.println(name);
}
System.out.println("--------------");
}
}
}
5.可變參數
從JDK1.5開始添加的這個功能;
格式:
修飾符 返回值類型 方法名(數據類型...變量名){
方法體;
}
數據類型...變量名 :表示可變參數,表示省略了0個或多個 這個類型的參數;
例如:
public int sum(int...i){
renturn 返回值;
}
其中int。。。i,表示省略了0個或多個這個類型的參數;
作用:
提高了方法代碼的重複使用率;
擴展了方法的功能;
public String contact(String...s){
renturn 返回字符串拼接的結果;
}
6.Collections類
一個用來操作集合的工具類;
方法:
static void sort(List<T> list):對list集合中的元素進行自然升序的排序;
(對中文的元素不能排序);
static void shuffle(List<T> list):把list集合中的元素隨機打亂;