五、docker容器的網路訪問
阿新 • • 發佈:2020-12-23
Map集合的特點
特點:
雙列集合,元素由鍵值對(Entry)構成:
key(鍵) -- value(值)
注意:
鍵(key)不可以重複,值(value)可以重複
應用:
Map<T1, T2> map = new HashMap<>();
解釋:
T1: 表示鍵的資料型別.
T2: 表示值的資料型別
成員方法:
V put(K key,V value); 新增元素(鍵值對的形式),
元素第一次新增, 返回null,
V get(Object key); 根據鍵獲取其對應的值
Set<K> keySet(); 獲取所有鍵的集合.
import java.util.HashMap; import java.util.Map; public class MapTest { public static void main(String[] args) { //需求:往map集合中新增三個學生物件並列印。 // 1.建立集合物件 // 鍵:學生的編號;值:具體的學生物件 Map<Integer,Student> map=new HashMap<>(); // 2.建立元素物件 Student s1=new Student("張三",23); Student s2=new Student("李四",23); Student s3=new Student("張三",23); // 3.將元素物件新增到集合中去 // 4.遍歷集合,列印結果 System.out.println(map); } }
//學生類 import java.util.Objects; public class Student { private String name; private int age; public Student() { } public Student(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Student{" + "name='" + name + '\'' + ", age=" + age + '}'; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Student student = (Student) o; return age == student.age && Objects.equals(name, student.name); } @Override public int hashCode() { return Objects.hash(name, age); } }
因為沒有進行3.將元素物件新增到集合中,所以map集合是空的列印結果為空
import java.util.HashMap;
import java.util.Map;
public class MapTest {
public static void main(String[] args) {
//需求:往map集合中新增三個學生物件並列印。
// 1.建立集合物件
// 鍵:學生的編號;值:具體的學生物件
Map<Integer,Student> map=new HashMap<>();
// 2.建立元素物件
Student s1=new Student("張三",23);
Student s2=new Student("李四",23);
Student s3=new Student("張三",23);
// 3.將元素物件新增到集合中去
Student stu1=map.put(1,s1);//返回Student型別的物件,用stu1接收。
System.out.println("stu1:"+stu1);
// 4.遍歷集合,列印結果
System.out.println(map);
}
}
元素第一次新增, 返回null,
重複新增, 會用新值覆蓋舊值, 並返回舊值.
import java.util.HashMap;
import java.util.Map;
public class MapTest {
public static void main(String[] args) {
//需求:往map集合中新增三個學生物件並列印。
// 1.建立集合物件
// 鍵:學生的編號;值:具體的學生物件
Map<Integer,Student> map=new HashMap<>();
// 2.建立元素物件
Student s1=new Student("張三",23);
Student s2=new Student("李四",23);
Student s3=new Student("張三",23);
// 3.將元素物件新增到集合中去
Student stu1=map.put(1,s1);//儲存鍵為1,學生為張三的物件新增進去,第一次新增返回null
Student stu2=map.put(1,s2);//鍵1已經存在,新值s2覆蓋舊值,返回舊值。stu2記錄的是舊值
System.out.println("stu1:"+stu1);
System.out.println("stu2:"+stu2);
// 4.遍歷集合,列印結果
System.out.println(map);
}
}
列印結果
實際工作中3.將元素物件新增到集合中會用如下程式碼,就是以上程式碼的3.用下邊的程式碼替換
map.put(1,s1);
map.put(2,s2);
map.put(3,s3);
列印結果
4.遍歷步驟:
雙列集合不能直接遍歷,要通過keySet()獲取鍵值從而將集合轉換成單列集合。
1. 獲取所有鍵的集合. keySet()
2. 遍歷所有的鍵, 獲取到每一個鍵. 迭代器, 增強for.
3. 根據鍵, 獲取指定的值. get()
// 4.遍歷集合,列印結果
Set<Integer> keys=map.keySet();
// 使用迭代器
Iterator<Integer> it=keys.iterator();
while (it.hasNext()){
//如果迭代器中有資料,就獲取
Integer key=it.next();
//根據鍵獲取值ue
Student value=map.get(key);
System.out.println("key: " + key + "...value:" + value);
}
System.out.println(map);
}
列印結果
使用增強for迴圈遍歷集合
Set<Integer> keys2=map.keySet();
for(Integer key:keys2){
Student value=map.get(key);
System.out.println("key: " + key + "...value:" + value);
}