1.Map集合
map集合也是存數(shù)據(jù)的
雙邊隊列
Interface Map<K,V>
k: key 鍵
v: value 值
鍵值對
存儲數(shù)據(jù)形式:key=值
{0001=張三, 002=李四, 003=王五}
兩個實現(xiàn)類
HashMap
TreeMap
1.1Map集合中常用的方法
增:
V put(K key, V vlaue);添加鍵值對的數(shù)據(jù)到map集合中
void putAll(Map<? extends K> k, Map<? extends V> v);將一個map集合存放到另外一個map集合中
刪:
V remove (K key);通過鍵刪除鍵值對的數(shù)據(jù)称近,返回值是值
改:
V put(K key V, value);當鍵值存在的時候撇贺,會將value值覆蓋掉的
查:
int size(); 查看集合中元素的個數(shù)
boolean isEmpty();判斷是否為空趟脂,如果不為空返回的是false
boolean containsKey();是否包含這個鍵
boolean containsValue();是否包含這個值
重要的方法:
V get(K key);通過鍵獲取值
Set<K> keySet();獲取map集合中的鍵兵迅,然后存到set集合中抢韭。因為list集合可以重復(fù),而set集合不能重復(fù)恍箭,鍵也不能重復(fù)刻恭,所以存到set集合中
Collection<V> values(); 獲取map集合中值,存到了Collection集合中
Set<Map.Entry<K,V>> entrySet()扯夭;將map集合的鍵值對鳍贾,存到了set集合
Map.Entry這個接口下面也有方法
getKey:返回鍵值對的鍵
getValue:返回鍵值對的值
package com.wyx.a_map;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class Demo1 {
public static void main(String[] args) {
Map<String, String> map = new HashMap<>();
//增
map.put("001", "張三");
map.put("002", "李四");
map.put("003", "王五");
System.out.println(map);
//{001=張三, 002=李四, 003=王五}
Map<String, String> map1 = new HashMap<>();
map1.put("004", "小明");
map1.put("005", "小張");
map1.put("006", "小花");
map.putAll(map1);
System.out.println(map);
//{001=張三, 002=李四, 003=王五, 004=小明, 005=小張, 006=小花}
//刪
System.out.println("通過鍵刪除值返回的是值,返回值是" + map.remove("006"));//小花
//改 用put覆蓋
map.put("004", "李華");
System.out.println(map);
//{001=張三, 002=李四, 003=王五, 004=李華, 005=小張}
//查
//查詢元素個數(shù)
System.out.println("查詢元素個數(shù)" + map.size());//5
//判斷是否為空 空:true
System.out.println("判斷是否為空" + map.isEmpty());//false
//查詢是否包含某個鍵
System.out.println(map.containsKey("001"));//true
//查詢是否包含某個值
System.out.println(map.containsValue("李四"));//true
//通過鍵獲取值
System.out.println(map.get("001"));
//獲取map集合中的所有鍵存到集合中交洗,返回值是Set<K>類型的
Set<String> set1 = map.keySet();
System.out.println(set1);//[001, 002, 003, 004, 005]
//獲取map集合中的所有值存到集合中骑科,返回值是Collection<V>類型的
Collection<String> collection = map.values();
System.out.println(collection);//[張三, 李四, 王五, 李華, 小張]
//entrySet():將map集合的鍵值對,存到了set集合
Set<Map.Entry<String, String>> set2 = map.entrySet();
System.out.println(set2);
//[001=張三, 002=李四, 003=王五, 004=李華, 005=小張]
//取數(shù)據(jù)
for (Map.Entry<String, String> stringStringEntry : set2) {
System.out.println(stringStringEntry);
System.out.println(stringStringEntry.getKey());
System.out.println(stringStringEntry.getValue());
System.out.println("---------------------------------------");
}
}
}
Map集合中的value存對象
package com.wyx.a_map;
import java.util.*;
class Student {
String name;
int age;
public Student(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
public class Demo2 {
public static void main(String[] args) {
Map<Integer, Student> map = new HashMap<>();
map.put(1,new Student("張三", 12));
map.put(2,new Student("李四", 18));
map.put(3,new Student("王五", 13));
System.out.println(map);
//{1=Student{name='張三', age=12}, 2=Student{name='李四', age=18}, 3=Student{name='王五', age=13}}
Student student1 = map.get(1);
System.out.println(student1.name);//張三
Set<Integer> set = map.keySet();
System.out.println(set);
Collection<Student> values = map.values();
System.out.println(values);
for (Student value : values) {
System.out.println(value.name);
}
//張三
//李四
//王五
Set<Map.Entry<Integer, Student>> entries = map.entrySet();
for (Map.Entry<Integer, Student> entry : entries) {
System.out.println(entry.getKey());
System.out.println(entry.getValue());
}
//1
//Student{name='張三', age=12}
//2
//Student{name='李四', age=18}
//3
//Student{name='王五', age=13}
//在map集合中存list集合藕筋,list集合中存Student對象
List<Student> list1 = new ArrayList<>();
list1.add(new Student("張三", 12));
list1.add(new Student("李四", 18));
list1.add(new Student("王五", 13));
List<Student> list2 = new ArrayList<>();
list2.add(new Student("小明", 12));
list2.add(new Student("小張", 18));
list2.add(new Student("老李", 13));
Map<Integer, List<Student>> map1 = new HashMap<>();
map1.put(1, list1);
map1.put(2, list2);
Collection<List<Student>> values1 = map1.values();
for (List<Student> list : values1) {
for (Student student : list) {
System.out.println(student.name);
}
}
//張三
//李四
//王五
//小明
//小張
//老李
}
}