[Java] 13.4. Map

Map,以鍵值key/值value成對的方式保留你的資料。

 

image/svg+xml使⽤ keySet() ⽅法取得員⼯資料表 Map 中的所有欄位 13.4.Map 製作個員⼯基本資料表, 但怎麼將欄位與資料對應起來呢? import java.util.*; class Main{ public static void main( String [] args){ ArrayList cols = new ArrayList (); cols.add( "ID" ); cols.add( "Name" ); cols.add( "Age" ); cols.add( "Gender" ); cols.add( “Salary" ); ArrayList vals = new ArrayList (); vals.add( "K123456789" ); vals.add( "Jack" ); vals.add( 20 ); vals.add( " 男⽣ " ); vals.add( 40000 ); for ( int i= 0 ; i< cols.size (); i++){ System.out.print( cols.get (i)); System.out.println( vals.get (i)); } } } import java.util.*; class Main{ public static void main( String [] args){ HashMap table = new HashMap (); table.put ( " ID " , " K123456789 " ); table.put ( "Name" , "Jack" ); table.put ( "Age" , 20 ); table.put ( "Gender" , " 男⽣ " ); table.put ( "EmployeeID" , "048679" ); table.put ( "Salary" , 4000 ); System.out.println( table.get ( "ID" )); System.out.println( table.get ( "Name" )); System.out.println( table.get ( "Age" )); System.out.println( table.get ( "Gender" )); System.out.println( table.get ( "EmployeeID" )); System.out.println( table.get ( "Salary" )); } } import java.util.*; class MainClass{ public static void main( String [] args){ HashMap table = new HashMap (); table.put ( " ID " , " K123456789 " ); table.put ( " EmployeeID " , " K123456789 " ); System.out.println(table.get( "ID" )); System.out.println(table.get( "EmployeeID" )); table.put ( " EmployeeID " , " 048679 " ); System.out.println(table.get( "EmployeeID" )); } } 執⾏結果 K123456789 K123456789 048679 import java.util.*; class Main{ public static void main( String [] args){ HashMap table = new HashMap (); table.put ( "ID" , "K123456789" ); table.put( "Name" , "Jack" ); table.put( "Age" , 20 ); table.put( "Gender" , " 男⽣ " ); table.put( "EmployeeID" , "048679" ); table.put( "Salary" , 4000 ); Set keys = table.keySet (); for ( Object key : keys ){ System.out.print( key + " " ); System.out.println( table.get ( key )); } } } 執⾏結果 ID K123456789 Name Jack Age 20 Gender :男⽣ EmployeeID 048679 Salary 4000 import java.util.*; class Main{ public static void main( String [] args){ HashMap table = new HashMap (); table.put ( "ID" , "K123456789" ); table.put ( "Name" , "Jack" ); table.put ( "Age" , 20 ); table.put ( "Gender" , " 男⽣ " ); table.put ( "EmployeeID" , "048679" ); table.put ( "Salary" , 4000 ); Collection vals = table.values (); for ( Object val : vals ){ System.out.println( val ); } } } 執⾏結果 ID K123456789 Name Jack Age 20 Gender :男⽣ EmployeeID 048679 Salary 4000 J13_4_1 Main.java 1. 為了建立員⼯基本資料表,先建立 1 ArrayList 物件以存放欄位資訊。 J13_4_2 Main.java 2. 建立另⼀個 ArrayList 物件, ⽤來保存員⼯的資料。 3. 以存放欄位的 ArrayList 中資料的總數, 作為迴圈停⽌的條件。 4. 以索引值的⽅式,將相同索引位置的欄位 與資料對應起來。嗯~看起來真的蠻⿇煩的。 使⽤2個 List 的⽅式製作員⼯資料表雖然是可以使⽤的,但使⽤上就是會比 較⿇煩。在欄位作增加、刪除時也需要同時修改存放資料的 List ;⽽且員⼯ 資料表中欄位是不可重複,那這時就改⽤ Set 嗎?!可以,但這將會造成欄位 與資料對應上更加的困難。 4. 2 個參數表⽰值,值會與前⾯的鍵值組成⼀對。 1. 注意, Map 並沒有繼承⾃ Collection 介⾯。 5. ⼀個 put() ⽅法,將會把欄位與資料對應在起來。在這我們分別將⾝份證字號 ID )、姓名( Name )、年齡( Age )、性別( Gender )、⼯號( EmployeeID 與薪⽔( Salary )欄位相對應的資料對應起來。 3. 1 個參數表⽰鍵值,這時就 可以存放⼈員基本資料的欄位。 2. 建立 HashMap 物件,以模擬員⼯基本資料表。 6. 取出資料時候只要給予鍵值,即可將對應的值取出,⽽員⼯資料表的 欄位就是鍵值,因此只要給予欄位名稱,就可以取得對應的資料了。 另⼀個實作 Hash 介⾯的類別 -Hashtable, HashMap 類別比較起來只是名 稱上的不同⽽已,其功能是相同的, Java 提供 Hashtable 的⽤意只是順應類 別的命名潮流,因為⼤多數提功 Map 功能的類別都習慣以 Hashtable 命名, 如此⽽已。 J13_4_3 Main.java 1. 建立 HashMap 物件,以模擬員⼯基本資料表。 2. 雖然有相同的值,但對應它們的鍵值是不⼀樣的時候,相同的值還是可以透過 put() ⽅法存在於 Map 中。這說明了,這兩個欄位的值,剛好是相同的時候,還是 可以同時存在的,就像許多公司的⼯號就是與⾝份證字號相同是⼀樣的道理。 3. 相同的⼯號欄位( EmployeeID )已經存在於員⼯資料表中了,若是再⼀次的放 入,員⼯資料表並不會再多⼀個⼯號欄位,⽽是會找到即有的⼯號欄位,並以新的值取 代原有的值。因此,可以說當 put() ⽅法給予的鍵值相同時,則可進⾏值的變更。 J13_4_4 Main.java 1. 建立 HashMap 物件,以模擬員⼯基本資料表。 2. 透過 put() ⽅法將員⼯基本資料放入 HashMap 物件中。 3. keySet() ⽅法讓我們取得 Map 中的所有鍵值,並以 Set 型別的物件傳 回。為什麼呢?!原因是鍵值是不會重複出現在 Map 中的,因此可使⽤ Set 不重複的特性,將鍵值保起來,這時我們將會得到所有欄位的名稱。 4. 使⽤ for 依序的給予⼈員資料表 Map 欄位名稱,以取得對應的資料。 J13_4_5 Main.java 3. values() ⽅法讓我們取得 Map 中的所有的值,並以 Collection 的型別傳回。因為值的資料有可能會重複,所以不使⽤ Set 型別的物件 傳回,⽽是使⽤ Collection 型別的物件傳回。 4. 使⽤ for 依序列出所有的資料值。 Map 讓員⼯基本資料中的每⼀個欄位只會持有⼀個值 Map 將員⼯基本資料表的欄位與值配成⼀對 1 2 3 1 2 3 1 1 使⽤ values() ⽅法取得員⼯資料表 Map 中的所有資料 1. 建立 HashMap 物件,以模擬員⼯基本資料表。 2. 透過 put() ⽅法將員⼯基本資料放入 HashMap 物件中。 1 1

留言