集合預設使用 Object 型別,所以 key 與 value 可以是任意型別的物件
程式碼
import java.util.HashMap;
import java.util.Map;
//集合預設使用 Object 型別,所以 key 與 value 可以是任意型別的物件
public class MapDemo {
public static void main(String[] args) {
Map map = new HashMap(); //HashMap基於雜湊表的 Map 介面的實作,並允許使用 null 值和 null 鍵
//將成對的Key、valus放入集合,每個鍵最多只能映射到一個值
map.put(100, "中正區");
map.put(103, "大同區");
Object obj=map.get(103); //給Key取出valus
System.out.println(obj);
String s=(String)obj;//將Object轉換為String
System.out.println("字串長度:"+s.length());//讀取字串長度
}
}
可以使用泛型,就不需要轉換類別
import java.util.HashMap;
import java.util.Map;
public class MapDemo2 {
public static void main(String[] args) {
//< > 泛型,限定 Key 為Integer,valus為 String
Map<Integer,String> map = new HashMap<>();
//將成對的Key、valus放入集合
map.put(100, "中正區");
map.put(103, "大同區");
/*
因為當初使用泛型,指定valus為String
所以現在不用Object宣告變數,直接使用String
如果不使用泛型的集合,需要進行轉型,請參照MapDemo
*/
String value=map.get(103);
System.out.println(value);
//valus是String,不用轉型
System.out.println("字串長度:"+value.length());
}
}
運用之前作過的樂透進行配對
Lotto
import java.util.ArrayList;
public class Lotto {
private static ArrayList 數字陣列;
private static ArrayList 樂透;
private static int 索引;
private static int 抽出號碼;
public static ArrayList 產生一組樂透號碼(){
建立數字與樂透陣列();
將42個號碼放進數字陣列();
for (int j=1;j<=6;j++){
用亂數產生一個陣列索引();
根據索引從陣列取出號碼();
將抽出的號碼放進樂透陣列();
}return 樂透;
}
private static void 建立數字與樂透陣列(){
數字陣列=new ArrayList();
樂透=new ArrayList();
}
private static void 將42個號碼放進數字陣列(){
for (int i=1;i<=42;i++){
數字陣列.add(i);
}
}
private static void 用亂數產生一個陣列索引(){
索引=(int)(Math.random()*數字陣列.size());
}
private static void 根據索引從陣列取出號碼(){
Object obj=數字陣列.remove(索引);
抽出號碼=(int)obj;
}
private static void 將抽出的號碼放進樂透陣列(){
樂透.add(抽出號碼);
}
}
使用Map
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import javax.swing.JOptionPane;
public class MapDemo3 {
public static void main(String[] args) {
ArrayList a = Lotto.產生一組樂透號碼();
ArrayList b = Lotto.產生一組樂透號碼();
System.out.println("a=" + a);
System.out.println("b=" + b);
//泛型,指定Key為String,value為ArrayList
Map<String, ArrayList> map = new HashMap<>();
//成對的Key,valus放入
map.put("張無忌", a);
map.put("周芷若", b);
/*
因為當初使用泛型,指定valus為String
所以現在不用Object宣告變數,直接使用String
*/
String name = JOptionPane.showInputDialog("請輸入名字:");
ArrayList value = map.get(name); //將Key帶入取value
JOptionPane.showMessageDialog(null, value);
}
}