[Java] 13.1. List

List - 清單,不同於陣列,以清單的方式管理你的資料。

 

image/svg+xml13.1.List List 讓我們隨意的增加班表中的名單 class Main{ public static void main( String [] args){ String [] schedule = new String [ 6 ]; schedule[ 0 ] = "Jack" ; schedule[ 1 ] = "Jason" ; schedule[ 2 ] = "Mary" ; schedule[ 3 ] = "John" ; schedule[ 4 ] = "Eric" ; schedule[ 5 ] = "Jack" ; schedule[ 6 ] = " Eric " ; } } import java.util.* ; class Main{ public static void main( String [] args){ ArrayList schedule = new ArrayList (); schedule.add ( "Jack" ); schedule.add ( "Jason" ); schedule.add ( "Mary" ); schedule.add ( "Jack" ); System.out.println( schedule.get ( 0 )); System.out.println( schedule.get ( 1 )); System.out.println( schedule.get ( 2 )); schedule.set ( 0 , " Eric " ); System.out.println(schedule.get( 0 )); } } import java.util.*; class Main{ public static void main( String [] args){ ArrayList schedule = new ArrayList (); schedule.add ( "Jack" ); schedule.add ( "Jason" ); schedule.add ( "Mary" ); schedule.remove ( 0 ); schedule.remove ( Mary " ); System.out.println( schedule.get ( 0 )); } } 執⾏結果 Jason import java.util.*; class Main{ public static void main( String [] args){ ArrayList schedule = new ArrayList (); schedule.add ( "Jack" ); schedule.add ( "Jason" ); schedule.add ( "Mary" ); schedule.add ( "Alex" ); schedule.add ( "Jack" ); schedule.add ( "Mary" ); int s = schedule.size (); for ( int i= 0 ; i< s ; i++){ System.out.println( schedule.get (i)); } } } import java.util.*; class Main{ public static void main( String [] args){ ArrayList schedule = new ArrayList (); schedule.add ( "Jason" ); schedule.add( "Mary" ); schedule.add( "Alex" ); schedule.add( "Jack" ); schedule.add( "Mary" ); String name ; Iterator i = schedule.iterator (); while ( i.hasNext () ){ name = ( String ) i.next (); System.out.println(name); } } } import java.util.*; class MainClass{ public static void main( String [] args){ ArrayList schedule = new ArrayList (); schedule.add ( "Jason" ); schedule.add ( "Mary" ); schedule.add ( "Alex" ); schedule.add ( "Jack" ); schedule.add ( "Mary" ); for ( Object o : schedule ){ System.out.println(o); } } } J13_1_1 Main.java 1. 員⼯資料是由⼩排到⼤的。 員⼯清冊 Eri c Jac k Joh n Mar y 班表 Eri c Jac k Eri c Jac k Mar y Joh n 2. 班表的資料可重複且沒有⼤⼩排序問題。 不同類型的清單 Java 可以幫我們管理呢?! 1. 先建⼀個擁有 7 0~6 的索引值)個空間的班表就好,反正⼀下也⽤不了這麼多。 2. 使⽤索引值當作每個⽉中的⽇期。因為索值是從0開始,因此0即表⽰1號的意思。 3. 嗯,很棒~~排定了 1 號⾄ 6 號的執班員⼯。 4. 不~~這個陣列並沒有索引值 6 的位置空間,執⾏此⾏程式時將發⽣異 常,但⼜想要在班表中往後排定接下來的執班員⼯,這時怎麼辦才好呢? J13_1_2 Main.java 1. 我們要使⽤的類別。 2. ArrayList 類別是放在 java.util 套件下的,因 此可以先匯入。當然還有其他的集合也在這個套件中。 3. 想要加入員⼯姓名的時候,即可隨時透過 add() ⽅法將員 ⼯姓名加入⾄班表中。當然也可以加入相同員⼯的姓名⾄班 表中,因為 List 是沒有限制重複的資料不可加入的規則。 4. get() ⽅法使⽤起來就像是陣列的使⽤⽅法,只要 給予索引值,即可取得對應的資料 - 員⼯姓名。 5. set() ⽅法是⽤來變更資料時使⽤的。使⽤起來也像是陣列的使⽤⽅法,只要 給予索引值,然後在給予新的員⼯姓名,就可以改變指定索引位置中的資料。 當然 LinkedList 類別也實作了 List 介⾯,因此也提供隨意增加或刪除項⽬ 的能⼒。 ArrayList LinkedList 很像,您可以只使⽤ List 介⾯上的⽅ 法,以統⼀的⽅式操作它們;但它們也有專屬⽅法,使⽤專屬的⽅法之前, 請以類別的名字 ArrayList LinkedList 思考為什麼它們會提供這些專屬 的⽅法。 J13_1_3 Main.java . 建入 ArrayList 物件,以模擬班表。 2. 透過 add() ⽅法加入員⼯姓名。 3. 在需要移除的時候,只要使⽤ remove() ⽅法,並將索 引值代入 remove() ⽅法中,即可移除對應空間的資料。 4. 這是另⼀個多載的 remove()   ⽅法,讓您直接給定 特定的員⼯姓名,以指定需要被移除的員⼯姓名。 5. 現在只剩下 1 個員⼯姓名了,因為在上⾯程式兩次的 remove() ⽅法, 已經將 2 個員⼯姓名移除了,所以只剩最後 1 個員⼯姓名 -Jason 特別注意的是,若是以給予員⼯姓名的⽅式使⽤ remove() ⽅法,這時若班 表中有 2 個以上相同員⼯姓名的資料,這時會先移除最先加入的那⼀個,⽽不 是移除後⾯加入的那⼀個。 J13_1_4 Main.java . 建入 ArrayList 物件,以模擬班表。 2. 透過 add() ⽅法加入 6 位員⼯的姓名。 3. 透過 size() ⽅法取得班表中員⼯姓名的總數。 4. 在搭配 for 迴圈與 get() ⽅法後,就可以依序的列出班表中的所有員⼯名單。 J13_1_5 Main.java . 建入 ArrayList 物件以模擬班表,同時加入 6 位員⼯的姓名。 2. 先準備⼀個 String 變數,等會放員⼯姓名⽤的。 3. 透過 List 上的 iterator() ⽅法,取得 Iterator 物件。 4. Iterator 介⾯提供了 hasNext() ⽅法,讓您可以 詢問是不是還有下⼀個資料可以取得,⽽我們的資料就 是員⼯姓名。有資料則回傳 true ,否則回傳 false 6. 取出的資料要記得轉型,原因是 next() ⽅法取出 的資料都是 Object 型別的,因此需要透過轉型將資料 轉換回原本的型別。⽽員⼯姓名的型別是 String ,所 以可以轉型回 String 型別,之後放入 name 變數中。 5. hasNext() ⽅法取得 true 的時候,我們就可以透 next() ⽅法實際的將下⼀個資料取出 - 即員⼯姓名。 J13_1_6 Main.java . 建入 ArrayList 物件以模擬班表,同時加入 6 位員⼯的姓名。 2. for 指令會呼叫 Collection 介⾯上的 iterator() ⽅法取得列舉器,以列出 List 的資料。⽽ List 介⾯⼜是繼承⾃ Collection 介⾯的⼦介⾯,因此實作 List 介⾯的類別, 也可以使⽤ Collection 介⾯所制定的 iterator() ⽅法來取得列舉器,以列舉資料。 管理公司中的各類清單 我想要排定班表,使⽤陣列適合嗎? List 也讓我們隨意的刪除班表中的名單 1 1 size() ⽅法,告訴您班表 List 中到底有多少員⼯姓名 想要列出班表中的所有名單, 就必須先透過 iterator() ⽅法取得列舉器 for 讓您以更簡單的⽅式列出班表中的所有名單

留言