集合框架-HashMap集合的案例
(5)HashMap集合的練習
A:HashMap<String,String>
package cn.itcast_02;
import java.util.HashMap;
import java.util.Set;
/*
* HashMap:是基於雜湊表的Map介面實現。
* 雜湊表的作用是用來保證鍵的唯一性的。
*
* HashMap<String,String>
* 鍵:String
* 值:String
*/
public class HashMapDemo {
public static void main(String[] args) {
// 建立集合物件
HashMap<String, String> hm = new HashMap<String, String>();
// 建立元素並新增元素,這樣新增寫可以,但是一般還是按下面的寫法
// String key1 = "it001";
// String value1 = "馬雲";
// hm.put(key1, value1);
hm.put("it001", "馬雲");
hm.put("it003", "馬化騰");
hm.put("it004", "賈伯斯");
hm.put("it005", "張朝陽");
hm.put("it002", "裘伯君"); // 一個人開發了wps,第一代程式設計師
hm.put("it001", "比爾蓋茲");
//加了比爾蓋茲,馬雲就被替換了
//因為鍵是唯一的,String重寫了hashcode()和equals()
// 遍歷
Set<String> set = hm.keySet();
for (String key : set) {
String value = hm.get(key);
System.out.println(key + "---" + value);
}
}
}
B:HashMap<Integer,String>
package cn.itcast_02;
import java.util.HashMap;
import java.util.Set;
/*
* HashMap<Integer,String>
* 鍵:Integer
* 值:String
*/
public class HashMapDemo2 {
public static void main(String[] args) {
// 建立集合物件
HashMap<Integer, String> hm = new HashMap<Integer, String>();
// 建立元素並新增元素
// Integer i = new Integer(27);
// Integer i = 27;
// String s = "林青霞";
// hm.put(i, s);
hm.put(27, "林青霞");
hm.put(30, "風清揚");
hm.put(28, "劉意");
hm.put(29, "林青霞");
// 下面的寫法是八進位制,但是不能出現8以上的單個資料
// hm.put(003, "hello");
// hm.put(006, "hello");
// hm.put(007, "hello");
// hm.put(008, "hello");
// 遍歷
Set<Integer> set = hm.keySet();
for (Integer key : set) {
String value = hm.get(key);
System.out.println(key + "---" + value);
}
// 下面這種方式僅僅是集合的元素的字串表示.不是遍歷
// System.out.println("hm:" + hm);
}
}
C:HashMap<String,Student>
package cn.itcast_02;
import java.util.HashMap;
import java.util.Set;
/*
* HashMap<String,Student>
* 鍵:String 學號
* 值:Student 學生物件
*/
public class HashMapDemo3 {
public static void main(String[] args) {
// 建立集合物件
HashMap<String, Student> hm = new HashMap<String, Student>();
// 建立學生物件
Student s1 = new Student("周星馳", 58);
Student s2 = new Student("劉德華", 55);
Student s3 = new Student("梁朝偉", 54);
Student s4 = new Student("劉嘉玲", 50);
// 新增元素
hm.put("9527", s1);
hm.put("9522", s2);
hm.put("9524", s3);
hm.put("9529", s4);
// 遍歷
Set<String> set = hm.keySet();
for (String key : set) {
// 注意了:這次值不是字串了
// String value = hm.get(key);
Student value = hm.get(key);
System.out.println(key + "---" + value.getName() + "---"+ value.getAge());
}
}
}
-----------------------------------------------------------------------------------------------------------------------------------------
D:HashMap<Student,String>
package cn.itcast_02;
import java.util.HashMap;
import java.util.Set;
/*
* HashMap<Student,String>
* 鍵:Student
* 要求:如果兩個物件的成員變數值都相同,則為同一個物件。
* 值:String
*/
public class HashMapDemo4 {
public static void main(String[] args) {
// 建立集合物件
HashMap<Student, String> hm = new HashMap<Student, String>();
// 建立學生物件
Student s1 = new Student("貂蟬", 27);
Student s2 = new Student("王昭君", 30);
Student s3 = new Student("西施", 33);
Student s4 = new Student("楊玉環", 35);
Student s5 = new Student("貂蟬", 27);
// 新增元素
hm.put(s1, "8888");
hm.put(s2, "6666");
hm.put(s3, "5555");
hm.put(s4, "7777");
hm.put(s5, "9999");
// 遍歷
Set<Student> set = hm.keySet();
for (Student key : set) {
String value = hm.get(key);
System.out.println(key.getName() + "---" + key.getAge() + "---"+ value);
}
}
}
package cn.itcast_02;
public class Student {
private String name;
private int age;
public Student() {
super();
}
public Student(String name, int age) {
super();
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 int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + age;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
//因為鍵相同,值覆蓋,鍵的底層依賴hashcode和equals,注意要重寫equals
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Student other = (Student) obj;
if (age != other.age)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
}
相關文章
- 集合框架-集合的巢狀遍歷(HashMap巢狀HashMap)框架巢狀HashMap
- java集合框架--HashMap--putJava框架HashMap
- 集合框架-集合的巢狀遍歷(HashMap巢狀ArrayList)框架巢狀HashMap
- 集合框架-集合的巢狀遍歷(ArrayList巢狀HashMap)框架巢狀HashMap
- 集合框架-HashMap和Hashtable的區別框架HashMap
- 集合框架-HashMap&HashSet&LinkedHshMap框架HashMap
- 集合框架-ArrayList集合儲存自定義物件的排序案例框架物件排序
- Java集合:HashMapJavaHashMap
- 集合框架-去重字串案例框架字串
- Java集合框架之 Java HashMap 原始碼解析Java框架HashMap原始碼
- Java集合框架原始碼剖析:HashSet 和 HashMapJava框架原始碼HashMap
- Java 集合框架 HashSet 和 HashMap 原始碼剖析Java框架HashMap原始碼
- Java集合之HashMapJavaHashMap
- 集合框架-去重字串案例-2框架字串
- 集合框架-TreeMap集合框架
- 集合框架-Set集合框架
- 集合框架-TreeSet集合框架
- 集合框架-Collection集合框架
- 集合框架-List集合框架
- 【集合框架】Java集合框架綜述框架Java
- 集合框架-Map集合的遍歷框架
- 集合框架-集合總結框架
- 集合框架-List集合-2框架
- 集合框架-List集合-3框架
- 集合框架-Collection集合-2框架
- 集合框架-Collection集合-3框架
- Java集合系列之---HashMapJavaHashMap
- Java集合系列之HashMapJavaHashMap
- 圖解集合4:HashMap圖解HashMap
- 集合框架-去重自定義物件案例框架物件
- 集合框架原始碼學習之HashMap(JDK1.8)框架原始碼HashMapJDK
- 【集合框架】JDK1.8原始碼分析之HashMap(一)框架JDK原始碼HashMap
- 集合框架-集合的巢狀遍歷框架巢狀
- 集合框架-Map集合功能概述框架
- Java集合(1)一 集合框架Java框架
- 集合框架-Collection集合總結框架
- 集合框架框架
- java集合初探(一):HashMap.JavaHashMap