August 11, 2012

Collection Interface

Collection သည် အချက်အလက် အစုအစည်းအား ကိုယ်စားပြုပြီး၊ Collection များအားလုံး၏ အခြေခံ အကျဆုံး လုပ်ဆောင်ချက်များအား စုစည်းထားပါသည်။ Collection Framework အတွင်းရှိ General Implementations များတွင် တူညီသော Collection တစ်ခုအား Argument အဖြစ်ရယူသော Constructor တစ်ခုကို ပိုင်ဆိုင်ပြီး Convention Constructor ဟု ခေါ်ဆို၏။ ထို Constructor သည် Argument အဖြစ်ရယူထားသော မည်သည့် ပုံစံရှိ Collection များမှမဆို ၎င်း၏ Election များအား initialize လုပ်ပြီး Collection အသစ်တစ်ခုကို တည်ဆောက်ပါသည်။ ဤနည်းအားဖြင့် Collection တစ်ခုမှ အခြားသော Collection တစ်ခု အဖြစ်ပြောင်းလည်း ပေးနိုင်ခြင်း ဖြစ်ပါသည်။

CollectionSample.java
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class CollectionSample {
 
 public static void main(String[] args) {
  
  Collection<String> list = new ArrayList<>();
  for(int i=0; i<5; i++)
   list.add(String.valueOf(i));
  
  Set<String> set = new HashSet<>(list);
  
  for(Iterator<String> i = set.iterator(); i.hasNext(); )
   System.out.println(i.next());
 }

}

စာကြောင်း ၁၅တွင် ArrayList အော့ဘဂျက် list အား Set အင်တာဖေစ်၏ အော့ဘဂျက်အဖြစ် ပြောင်းလည်းယူ နိုင်သည်ကို တွေ့ရပါသည်။

Collection Interface တွင် ပါဝင်သော လုပ်ဆောင်ချက်များမှာ အောက်ပါအတိုင်း ဖြစ်ကြ၏။

Collection.java
public interface Collection<E> extends Iterable<E> {
    // Basic operations
    int size();
    boolean isEmpty();
    boolean contains(Object element);
    // optional
    boolean add(E element);
    // optional
    boolean remove(Object element);
    Iterator<E> iterator();

    // Bulk operations
    boolean containsAll(Collection<?> c);
    // optional
    boolean addAll(Collection<? extends E> c); 
    // optional
    boolean removeAll(Collection<?> c);
    // optional
    boolean retainAll(Collection<?> c);
    // optional
    void clear();

    // Array operations
    Object[] toArray();
    <T> T[] toArray(T[] a);
}
ကော်လက်ရှင် အင်တာဖေစ်သည် အချက်အလက် အုပ်စုတစ်စုတွင် ပါဝင်သင့်သော အခြေခံ လုပ်ဆောင်ချက်များဖြင့် ဖွဲ့စည်းထားပါသည်။ Collection Interface ၏ size နှင့် isEmpty လုပ်ဆောင်ချက်ဖြင့် ကော်လက်ရှင်တွင်ပါဝင်သော Element များ၏ ပမာဏကို သိရှိနိုင်ပြီး၊ contains လုပ်ဆောင်ချက်ကို အသုံးပြုပါက Object တစ်ခုသည် Collection အတွင်းတွင် ပါဝင်ခြင်း ရှိမရှိကို သိရှိနိုင်ပါသည်။

Collection အတွင်း Element အား ဖြည့်စွက်ရာတွင် add ကို သော်၎င်း၊ ဖယ်ပြစ်ရာတွင် remove ကို အသုံးပြုနိုင်ပါသည်။ Element များအား တစ်ပြိုင်နက်တည်း အသုံးပြုလိုပါက containsAll၊ addAll၊ removeAll၊ retainAll နှင့် clear လုပ်ဆောင်ချက်များအား အသုံးပြုနိုင်ပါသည်။

ကော်လက်ရှင် အတွင်းရှိ Element များအား အသုံးပြုရန် Forဝါကျအား အသုံးပြုနည်းနှင့် Iterator အားအသုံးပြုနည်း ဟူ၍ နည်းလမ်းနှစ်ခု ရှိပါသည်။

CollectionLoopSample.java
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class CollectionLoopSample {

 public static void main(String[] args) {
  Collection<String> collection = new ArrayList<>();
  collection.add("one");
  collection.add("two");
  collection.add("three");
  
  for(String s : collection)
   System.out.println(s);
  
  Iterator<String> itr = collection.iterator();
  while(itr.hasNext())
   System.out.println(itr.next());
 }

}
စာကြောင်း ၁၃တွင် for(String s : collection) ဟု ရေးသားခြင်းအားဖြင့် Collection အော့ဘဂျက် အတွင်းမှ Element များအား String အော့ဘဂျက် s အဖြစ် တစ်ခုချင်းစီ အသုံးပြုနိုင်မည် ဖြစ်သည်။ တဖန် စာကြောင်း ၁၆ကဲ့သို့ Collection#iterator လုပ်ဆောင်ချက်အား အသုံးပြုခြင်းအားဖြင့် Iterator အော့ဘဂျက်ကို ရရှိမည် ဖြစ်ပြီး၊ while ဝါကျကို အသုံးပြု၍ iterator အတွင်း ရှိသမျှ Element များအား တစ်ခုချင်း ထုတ်ယူ အသုံးပြုနိုင်မည် ဖြစ်သည်။

တဖန် Collection#toArray လုပ်ဆောင်ချက်အား အသုံးပြုပါက Object [] ၏ ကိန်းစဉ် အော့ဘဂျက်ကို ရရှိနိုင်မည် ဖြစ်ပြီး၊ Collection#toArray(T [] a)  အား အသုံးပြုပါက T[] ၏ အော့ဘဂျက်ကို ရရှိမည် ဖြစ်ပါသည်။

No comments:

Post a Comment