Map集合
基礎題
練習一:Map介面的特點
一、請簡述Map的特點。
vMap每個元素由鍵與值兩部分組成
vMap鍵不能重複,每個鍵對應一個值
v鍵和值可以為null
練習二:Entry鍵值對物件
二、說出Entry鍵值對物件遍歷Map集合的原理。
Map中存放的是兩種物件,一種稱為key(鍵),一種稱為value(值),它們在在Map中是一一對應關係,這一對物件又稱做Map 中的一個Entry(項)。Entry將鍵值對的對應關係封裝成了物件。即鍵值對物件,這樣我們在遍歷Map集合時,就可以從每一個鍵值對(Entry)物件中獲取對應的鍵與對應的值。
練習三:Map介面中的常用方法
三、請使用Map集合的方法完成新增元素,根據鍵刪除,以及根據鍵獲取值操作。
public class MapTest01{ public static void main(String[] args) { // 1.建立HashMap HashMap<String, String> hm = new HashMap<String, String>(); // 2.使用put新增元素 hm.put("黃曉明", "Baby"); hm.put("鄧超", "孫儷"); hm.put("李晨", "范冰冰"); hm.put("大黑牛", "范冰冰"); // 3.使用put修改元素 String v1 = hm.put("李晨", "白百合"); // 4.使用get獲取元素 String string = hm.get("大黑牛"); // 5.使用remove刪除元素 String v2 = hm.remove("大黑牛"); System.out.println(v2); // 6.列印集合中的元素 System.out.println(hm); } }
練習四:Map介面中的方法
四、往一個Map集合中新增若干元素。獲取Map中的所有value,並使用增強for和迭代器遍歷輸出每個value。
public class MapTest02 { public static void main(String[] args) { // 1.建立HashMap HashMap<String, String> hm = new HashMap<String, String>(); // 2.使用put新增元素 hm.put("黃曉明", "Baby"); hm.put("鄧超", "孫儷"); hm.put("李晨", "范冰冰"); hm.put("大黑牛", "范冰冰"); // 3.使用Map的values方法獲取到所有的value Collection<String> values = hm.values(); // 4.使用增強for獲取每個value for (String value : values) { System.out.println(value); } System.out.println("----------------"); // 5.使用迭代器獲取每個value Iterator<String> itr = values.iterator(); while (itr.hasNext()) { System.out.println(itr.next()); } } }
練習五:HashMap儲存鍵是自定義物件值是String
五、請使用Map集合儲存自定義資料型別Car做鍵,對應的價格做值。並使用keySet和entrySet兩種方式遍歷Map集合。
汽車類:
// 1.定義汽車類.包含名稱和價格屬性,重寫hashCode和equals方法 public class Car { private String name; private String color; public Car() { } public Car(String name, String color) { this.name = name; this.color = color; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getColor() { return color; } public void setColor(String color) { this.color = color; } @Override public boolean equals(Object o) { if (this == o) return true; if (!(o instanceof Car)) return false; Car car = (Car) o; if (name != null ? !name.equals(car.name) : car.name != null) return false; return color != null ? color.equals(car.color) : car.color == null; } @Override public int hashCode() { int result = name != null ? name.hashCode() : 0; result = 31 * result + (color != null ? color.hashCode() : 0); return result; } }
測試類:
public class MapTest03 { public static void main(String[] args) { // 2.建立HashMapkey儲存汽車物件,value是汽車價格 HashMap<Car, Integer> hm = new HashMap<>(); // 3.新增汽車到HashMap中 Car c1 = new Car("長安奔奔", "黃色"); Car c3 = new Car("奇瑞QQ", "黑色"); Car c2 = new Car("鈴木奧拓", "白色"); hm.put(c1, 10000); hm.put(c2, 20000); hm.put(c3, 30000); // 4.使用keySet方式遍歷Map Set<Car> keySet = hm.keySet(); for (Car c : keySet) { // 根據key獲取value Integer value = hm.get(c); System.out.println(c.getName() + ","+ c.getPrice() + " - "+ value); } System.out.println("-------------"); // 5.使用entrySet方式遍歷Map Set<Map.Entry<Car, Integer>> entrySet = hm.entrySet(); for (Map.Entry<Car, Integer> entry : entrySet) { Car key = entry.getKey(); Integer value = entry.getValue(); System.out.println(key.getName() + ","+ key.getPrice() + " - "+ value); } } }
練習六:Map集合的使用(一)
六、現在有一個map集合如下:
Map<Integer,String> map =newHashMap<Integer, String>();
map.put(1,"張三丰");
map.put(2,"周芷若");
map.put(3,"汪峰");
map.put(4,"滅絕師太");
要求:
1.遍歷集合,並將序號與對應人名列印。
2.向該map集合中插入一個編碼為5姓名為李曉紅的資訊
3.移除該map中的編號為1的資訊
4.將map集合中編號為2的姓名資訊修改為"周林"
public class MapTest04 { public static void main(String[] args) { // 1.定義HashMap,編號作為key,姓名作為value Map<Integer,String> map = new HashMap<Integer, String>(); // 2.使用put方法新增元素 map.put(1, "張三丰"); map.put(2, "周芷若"); map.put(3, "汪峰"); map.put(4, "滅絕師太"); // 3.使用keySet+增強for迭代map中的元素,並列印 Set<Integer> keySet = map.keySet(); for (Integer key : keySet) { String value = map.get(key); System.out.println(key + " -- "+ value); } // 4.使用put向該map集合中插入一個編碼為5姓名為李曉紅的資訊 map.put(5, "李曉紅"); // 5.使用remove移除該map中的編號為1的資訊 map.remove(1); // 6.使用put將map集合中編號為2的姓名資訊修改為"周林" map.put(2, "周林"); System.out.println(map); } }
練習七:Map集合的使用(二)
七、有2個數組,第一個陣列內容為:[黑龍江省,浙江省,江西省,廣東省,福建省],第二個陣列為:[哈爾濱,杭州,南昌,廣州,福州],將第一個陣列元素作為key,第二個陣列元素作為value儲存到Map集合中。如{黑龍江省=哈爾濱, 浙江省=杭州, …}。
public class MapTest05 { public static void main(String[] args) { // 1.定義第一個陣列arr1 String[] arr1 = {"黑龍江省", "浙江省", "江西省", "廣東省", "福建省"}; // 2.定義第二個陣列arr2 String[] arr2 = {"哈爾濱", "杭州", "南昌", "廣州", "福州"}; // 3.建立HashMap,key存放省,value存放市 HashMap<String, String> hm = new HashMap<>(); // 4.使用普通for迴圈遍歷arr1 for (int i = 0; i < arr1.length; i++) { // 5.根據索引到arr1中獲取到省 String key = arr1[i]; // 6.根據索引到arr2中獲取到省會城市 String value = arr2[i]; // 7.將省和省會城市新增到HashMap中 hm.put(key, value); } // 8.輸出HashMap中的內容 System.out.println(hm); } }