一.請簡述Map 的特點(diǎn)瘪阁。
?Map每個(gè)元素由鍵與值兩部分組成
?Map鍵不能重復(fù),每個(gè)鍵對應(yīng)一個(gè)值
?鍵和值可以為null
二.說出Entry鍵值對對象遍歷Map集合的原理。
Map中存放的是兩種對象,一種稱為key(鍵)仙逻,一種稱為value(值)服鹅,它們在在Map中是一一對應(yīng)關(guān)系,這一對對象又稱做Map 中的一個(gè)Entry(項(xiàng))杈绸。Entry將鍵值對的對應(yīng)關(guān)系封裝成了對象帖蔓。即鍵值對對象矮瘟,這樣我們在遍歷Map集合時(shí),就可以從每一個(gè)鍵值對(Entry)對象中獲取對應(yīng)的鍵與對應(yīng)的值塑娇。
三.請使用Map集合的方法完成添加元素澈侠,根據(jù)鍵刪除,以及根據(jù)鍵獲取值操作埋酬。
package day14.zuoye;
import java.util.HashMap;
/*
三哨啃、請使用Map集合的方法完成添加元素,根據(jù)鍵刪除奇瘦,以及根據(jù)鍵獲取值操作棘催。
*/
public class zuoye1
{
public static void main(String[] args)
{
HashMap<String, Integer> map = new HashMap<>();
map.put("小王",22);
map.put("小李",18);
map.put("小張",20);
System.out.println(map);
System.out.println(map.remove("小張"));
System.out.println(map.get("小王"));
}
}
四.往一個(gè)Map集合中添加若干元素。獲取Map中的所有value耳标,并使用增強(qiáng)for和迭代器遍歷輸出每個(gè)value醇坝。
package day14.zuoye;
/*
四、往一個(gè)Map集合中添加若干元素次坡。獲取Map中的所有value呼猪,并使用增強(qiáng)for和迭代器遍歷輸出每個(gè)value。
*/
import java.util.*;
public class zuoye2
{
public static void main(String[] args)
{
HashMap<String, String> map = new HashMap<>();
map.put("洪七公","胡子長");
map.put("郭靖","耳朵大");
map.put("楊過","嘴大");
Collection<String> values = map.values();
System.out.println(values);
System.out.println("------------");
for (String value:values
) {
System.out.println(value);
}
System.out.println("------------");
Iterator<String> iterator = values.iterator();
while (iterator.hasNext())
{
System.out.println(iterator.next());
}
}
}
五.請使用Map集合存儲自定義數(shù)據(jù)類型Car做鍵砸琅,對應(yīng)的價(jià)格做值宋距。并使用keySet和entrySet兩種方式遍歷Map集合。
package day14.zuoye;
import java.security.Key;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
/*
*五症脂、請使用Map集合存儲自定義數(shù)據(jù)類型Car做鍵谚赎,對應(yīng)的價(jià)格做值。并使用keySet和entrySet兩種方式遍歷Map集合诱篷。
*/
public class Testzuoye3
{
public static void main(String[] args)
{
HashMap<Car, Integer> map = new HashMap<>();
map.put(new Car("寶馬"),545000);
map.put(new Car("奔馳"),565600);
map.put(new Car("路虎"),895600);
Set<Map.Entry<Car, Integer>> entrySet = map.entrySet();//用entrySet方式遍歷Map
for (Map.Entry<Car, Integer> entry:entrySet)
{
Car key=entry.getKey();
Integer value=entry.getValue();
System.out.println(key.getName()+value);
}
Set<Car> set = map.keySet(); //用keySet方式遍歷Map
for (Car str:set
) {
Integer value=map.get(str);
System.out.println(str.getName()+value);
}
}
}
六.現(xiàn)在有一個(gè)map集合如下:
Map<Integer,String> map = new HashMap<Integer, String>();
map.put(1, "張三豐");
map.put(2, "周芷若");
map.put(3, "汪峰");
map.put(4, "滅絕師太");
要求:
1.遍歷集合壶唤,并將序號與對應(yīng)人名打印。
2.向該map集合中插入一個(gè)編碼為5姓名為李曉紅的信息
3.移除該map中的編號為1的信息
4.將map集合中編號為2的姓名信息修改為"周林"
package day14.zuoye;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
/*
要求:
1.遍歷集合棕所,并將序號與對應(yīng)人名打印闸盔。
2.向該map集合中插入一個(gè)編碼為5姓名為李曉紅的信息
3.移除該map中的編號為1的信息
4.將map集合中編號為2的姓名信息修改為"周林"
*/
public class zuoye4
{
public static void main(String[] args)
{
Map<Integer,String> map = new HashMap<Integer, String>();
map.put(1, "張三豐");
map.put(2, "周芷若");
map.put(3, "汪峰");
map.put(4, "滅絕師太");
Set<Integer> keySet = map.keySet();
for (Integer key:keySet
) {
System.out.println(map.get(key));
}
map.put(5,"李曉紅");
map.remove(1);
map.put(2,"周林");
System.out.println(map);
}
}
七.有2個(gè)數(shù)組,第一個(gè)數(shù)組內(nèi)容為:[黑龍江省,浙江省,江西省,廣東省,福建省]琳省,第二個(gè)數(shù)組為:[哈爾濱,杭州,南昌,廣州,福州]迎吵,將第一個(gè)數(shù)組元素作為key,第二個(gè)數(shù)組元素作為value存儲到Map集合中针贬。如{黑龍江省=哈爾濱, 浙江省=杭州, …}击费。
package day14.zuoye;
import java.util.HashMap;
/*
七、有2個(gè)數(shù)組桦他,第一個(gè)數(shù)組內(nèi)容為:[黑龍江省,浙江省,江西省,廣東省,福建省]蔫巩,
第二個(gè)數(shù)組為:[哈爾濱,杭州,南昌,廣州,福州],將第一個(gè)數(shù)組元素作為key,
第二個(gè)數(shù)組元素作為value存儲到Map集合中批幌。如{黑龍江省=哈爾濱, 浙江省=杭州, …}。
*/
public class zuoye5
{
public static void main(String[] args)
{
String[] arr1={"黑龍江省","浙江省","江西省","廣東省","福建省"};
String[] arr2={"哈爾濱","杭州","南昌","廣州","福州"};
HashMap<String, String> map = new HashMap<>();
for (int i = 0; i <arr1.length ; i++) {
// String key=arr1[i];
// String value=arr2[i];
// map.put(key,value);
map.put(arr1[i],arr2[i]);
}
System.out.println(map);
}
}