BloveSaga

          在希臘帕爾納斯山南坡上,有一個馳名世界的戴爾波伊神托所,在它的入口處的巨石上赫然銹刻著這樣幾個大字: 認識你自己!

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            34 隨筆 :: 12 文章 :: 122 評論 :: 0 Trackbacks

          ???? Collection?????????????????? Map(和Collection接口沒任何關系)
          ?????? / \???????????????????????? |
          ????? /?? \??????????????????????? |?????
          ??? Set?? List????????????????? SortedMap
          ??? /
          ?? /
          ?SortedSet
          (接口圖)



          所謂框架就是一個類庫的集合。集合框架就是一個用來表示和操作集合的統一框架,包含了實現
          集合的接口和類。
          ?
          ?集合框架中的接口

          ?.Collection: 集合層次中的根接口,JDK沒有提供這個接口直接的實現類。
          ?.Set: 不能包含重復的元素。SortedSet是一個按照升序排列元素的Set。
          ?.List: 是一個有序的集合,可以包含重復的元素。提供了按照索引訪問的方式。
          ?.Map: 包含了key-value對。Map不能包含重復的key。SortedMap是一個按照升序排列key的Map。
          ?
          ?集合框架中的實現類
          ?
          ?實線表示繼承類,虛線表示實現類。
          ?(圖如下)


          ?.ArrayList: 我們可以將其看做是能夠自動增長容量的數組。
          ?.利用ArrayList的toArray()返回一個數組。
          ?.Arrays.asList()返回一個列表。
          ?.迭代器(Iterator)給我們提供了一種通用的方式來訪問集合中的元素。

          ?注意: 從集合類中獲取一個數組 toArray(),從數組獲取列表利用Arrays.asList()
          ?例子:
          import java.util.*;
          class ArrayListTest
          {
          ?public static void printElement(Collection c)
          ?{
          ??Iterator it = c.iterator();
          ??while(it.hasNext())
          ??{
          ???System.out.println(it.next());
          ??}
          ?}
          ?public static void main(String[] args)
          ?{
          ??ArrayList a = new ArrayList();
          ??/*
          ??a.add("abc");
          ??a.add("def");
          ??a.add("hjk");
          ??*/
          ??
          ??a.add(new Point(1,1));
          ??a.add(new Point(2,2));
          ??a.add(new Point(3,3));
          ??/*
          ??Object[] o;
          ??o=a.toArray();? //將集合類轉換為數組
          ??for(int i=0;i<o.length;i++)
          ??{
          ???System.out.println(o[i]);
          ??}
          ??
          ??List b = new ArrayList();
          ??b=Arrays.asList(o);
          ??System.out.println(b);
          ??
          ??for(int i=0;i<a.size();i++)
          ??{
          ???System.out.println(a.get(i));
          ??}
          ??
          ??System.out.println(a);
          ??System.out.println(a);
          ??*/
          ??
          ??/*
          ??Iterator it = a.iterator();
          ?? 如果要刪除元素,必須先調用next方法
          ??it.next();
          ??it.remove();
          ??while(it.hasNext())
          ??{
          ???System.out.println(it.next());
          ??}
          ??*/
          ??//迭代器的作用: 提供一組通用的訪問方式
          ??printElement(a);
          ?}
          }

          class Point
          {
          ?int x, y;
          ?Point(int x, int y)
          ?{
          ??this.x=x;
          ??this.y=y;
          ?}
          ?public String toString()
          ?{
          ??return "x="+x+","+"y="+y;
          ?}
          }

          ?Collections類

          ?.排序: Collections.sort(); [區別與Arrays.sort()]
          ? (1) 自然排序(natural ordering);
          ? (2) 實現比較器(Comparator)接口。
          ?.取最大和最小的元素: Collections.max(),Collections.min();
          ?.在已排序的List中搜索指定的元素: Collections.binarySearch()。

          ?代碼示例:
          import java.util.*;
          class ArrayListTest
          {
          ?public static void printElement(Collection c)
          ?{
          ??Iterator it = c.iterator();
          ??while(it.hasNext())
          ??{
          ???System.out.println(it.next());
          ??}
          ?}
          ?public static void main(String[] args)
          ?{
          ??/*
          ??ArrayList a = new ArrayList();
          ??
          ??a.add("abc");
          ??a.add("def");
          ??a.add("hjk");
          ??
          ??
          ??a.add(new Point(1,1));
          ??a.add(new Point(2,2));
          ??a.add(new Point(3,3));
          ??
          ??Object[] o;
          ??o=a.toArray();? //將集合類轉換為數組
          ??for(int i=0;i<o.length;i++)
          ??{
          ???System.out.println(o[i]);
          ??}
          ??
          ??List b = new ArrayList();
          ??b=Arrays.asList(o);
          ??System.out.println(b);
          ??
          ??for(int i=0;i<a.size();i++)
          ??{
          ???System.out.println(a.get(i));
          ??}
          ??
          ??System.out.println(a);
          ??System.out.println(a);
          ??*/
          ??
          ??/*
          ??Iterator it = a.iterator();
          ?? 如果要刪除元素,必須先調用next方法
          ??it.next();
          ??it.remove();
          ??while(it.hasNext())
          ??{
          ???System.out.println(it.next());
          ??}
          ??*/
          ??//迭代器的作用: 提供一組通用的訪問方式
          ??//printElement(a);
          ??
          ??Student s1 = new Student(1,"zhangsan");
          ??Student s2 = new Student(2,"lisi");
          ??Student s3 = new Student(3,"wangwu");
          ??Student s4 = new Student(3,"blovesaga");
          ??
          ??ArrayList a = new ArrayList();
          ??a.add(s1);
          ??a.add(s2);
          ??a.add(s3);
          ??a.add(s4);
          ??
          ??//Collections.sort(a);
          ??Collections.sort(a,new Student.StudentComparator());
          ??printElement(a);
          ?}
          }

          class Point
          {
          ?int x, y;
          ?Point(int x, int y)
          ?{
          ??this.x=x;
          ??this.y=y;
          ?}
          ?public String toString()
          ?{
          ??return "x="+x+","+"y="+y;
          ?}
          }

          class Student implements Comparable
          {
          ?int num;
          ?String name;
          ?//實現比較器,它總是和我們的一個類相關,用內部類
          ?static class StudentComparator implements Comparator? //為了調用方便聲明為靜態的
          ?{
          ??public int compare(Object o1,Object o2)
          ??{
          ???Student s1 = (Student)o1;
          ???Student s2 = (Student)o2;
          ???int result=s1.num > s2.num ? 1: (s1.num==s2.num ? 0 : -1);
          ???if(result==0)
          ???{
          ????return s1.name.compareTo(s2.name);
          ???}
          ???return result;
          ??}
          ?}
          ?Student(int num,String name)
          ?{
          ??this.num=num;
          ??this.name=name;
          ?}
          ?public int compareTo(Object o)
          ?{
          ??Student s=(Student)o;
          ??return num > s.num ? 1 :( (num==s.num) ? 0 : -1);
          ?}
          ?
          ?public String toString()
          ?{
          ??return +num+":"+name;
          ?}
          }

          ?

          ?

          posted on 2006-06-09 11:28 藍色Saga 閱讀(207) 評論(0)  編輯  收藏 所屬分類: Basic Study for JAVA
          主站蜘蛛池模板: 黔西县| 延寿县| 大同市| 丰顺县| 阳山县| 拜泉县| 应城市| 波密县| 汾阳市| 沛县| 农安县| 临邑县| 建瓯市| 太和县| 鸡东县| 长乐市| 宜昌市| 新沂市| 翼城县| 黔南| 堆龙德庆县| 育儿| 大埔区| 汉寿县| 洛浦县| 宜宾县| 祁门县| 广安市| 固安县| 安乡县| 湟源县| 石城县| 深水埗区| 广昌县| 富顺县| 灵宝市| 保山市| 汉源县| 阳东县| 江油市| 洪雅县|