1. 程式人生 > 實用技巧 >Map集合

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做鍵,對應的價格做值。並使用keySetentrySet兩種方式遍歷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);
    }
}