<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 37, comments - 8, trackbacks - 0, articles - 0

    java基礎(chǔ):關(guān)于集合類

    Posted on 2008-08-04 10:15 夢與橋 閱讀(268) 評論(0)  編輯  收藏 所屬分類: java基礎(chǔ)

    1、描述:類集僅僅是提供了處理事情的一個更好的方法。盡管類集的增加改變了許多原始工具的結(jié)構(gòu),但卻不會導(dǎo)致被拋棄。
    2、集合框架圖:

    3、 ArrayList:能夠自動增長容易的數(shù)組,其底層以對象數(shù)組的方式實現(xiàn)。
    code:
    import java.util.*;
    public class Test
    {
     public static void printElements(Collection c)
     {
      Iterator it=c.iterator();
      //remove方法是一個可選擇的方法,移去上次返回的對象
      //大部分集合框架類,都實現(xiàn)了接口的這個方法
      //it.next();
      //it.remove();
      while(it.hasNext())
      {
       System.out.println(it.next());
      }
     }
     public static void main(String args[])
     {
      ArrayList al=new ArrayList();
      //al.add("太陽");
      //al.add("星星");
      //al.add("月亮");
      //添加對象元素
      al.add(new Student("張三",21));
      al.add(new Student("李四",22));
      al.add(new Student("王五",25));
      //get()方法獲取元素
      for(int i=0;i<al.size();i++)
      {
       System.out.println(al.get(i));
      }
      //直接打印
      System.out.println(al);
      //ArrayList的toArray()方法獲得的數(shù)組
      Object[] objs=al.toArray();
      for(int i=0;i<objs.length;i++)
      {
       System.out.println(objs[i]);
      }
      //Arrays.asList()返回一個固定列表
      List l=Arrays.asList(objs);
      System.out.println(l);
      //Iterator:通用的訪問數(shù)據(jù)的方法
      printElements(al);
     }
    }
    class Student
    {
     private String name;
     private int age;
     
     Student(String name,int age)
     {
      this.name=name;
      this.age=age;
     }
     public String toString()
     {
      return "name"+name+"age:"+age;
     }
    }

    4、Collections類:

    import java.util.*;
    public class Test
    {
     public static void printElements(Collection c)
     {
      Iterator it=c.iterator();
      while(it.hasNext())
      {
       System.out.println(it.next());
      }
     }
     public static void main(String args[])
     {
      ArrayList al=new ArrayList();
      al.add(new Student(2,"zhangsan"));
      al.add(new Student(1,"lisi"));
      al.add(new Student(3,"wangwu"));
      al.add(new Student(3,"laoqi"));
      //調(diào)用Collections的方法進行排序,被排序?qū)ο笠獙崿F(xiàn)Comparable接口compareTo方法
      //Collections.sort(al);
      //指定比較器——實現(xiàn)Comparator接口的compare()方法
      Collections.sort(al,new Student.StudentComparator());
      //反序排列
      //Collections.sort(al,Collections.reverseOrder());
      printElements(al);
     }
    }
    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)
       {
        result=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:"+num+"\tname:"+name;
     }
    }

    4、LinkedList:采用雙向鏈表實現(xiàn)的,可實現(xiàn)棧、隊列、雙向隊列

    import java.util.*;
    public class Test
    {
     public static void main(String[] args)
     {
      MyStack ms=new MyStack();
      ms.push("one");
      ms.push("two");
      ms.push("three");
      while(!ms.empty())
      {
       System.out.println(ms.pop());
      }

      MyQueue mq=new MyQueue();
      mq.put("one");
      mq.put("two");
      mq.put("three");
      while(!mq.empty())
      {
       System.out.println(mq.get());
      }
     }
    }
    class MyStack
    {
     private LinkedList ll=new LinkedList();
     public void push(Object o)
     {
      ll.addFirst(o);
     }
     public Object pop()
     {
      return ll.removeFirst();
     }
     public Object peek()
     {
      return ll.getFirst();
     }
     public boolean empty()
     {
      return ll.isEmpty();
     }
    }
    class MyQueue
    {
     private LinkedList ll=new LinkedList();
     public void put(Object o)
     {

      ll.addLast(o);
     }
     public Object get()
     {
      return ll.removeFirst();
     }
     public boolean empty()
     {
      return ll.isEmpty();
     }
    }

            注:ArrayList底層采用數(shù)組完成,Linkedlist以一般的雙向鏈表完成,除了數(shù)據(jù)本身,還有兩個引用。如果要經(jīng)常在列表的開始處增加元素,或在列表中大量地增刪操作,應(yīng)采用LinkedList,否則使用ArrayList更快。

    5、HashSet類

    import java.util.*;
    public class Test
    {
      public static void printElements(Collection c)
         {
      Iterator it=c.iterator();
      while(it.hasNext())
      {
       System.out.println(it.next());
      }
         }
     public static void main(String args[])
     {
      HashSet hs=new HashSet();
      hs.add(new Student(1,"zhangsan"));
      hs.add(new Student(2,"lisi"));
      hs.add(new Student(3,"wangwu"));
      hs.add(new Student(1,"zhangsan"));
      printElements(hs);
     }
    }
    class Student
    {
     int num;
     String name;
     Student(int num,String name)
     {
      this.num=num;
      this.name=name;
     }
     public String toString()
     {
      return num+":"+name;
     }
     //Object類里的hashCode()哈希的鍵是地址
     //要為存放到散列表的各個對象同時定義hasCode()和equals()
     public int hashCode()
     {
      return num*name.hashCode();
     }
     public boolean equals(Object o)
     {
      Student s=(Student)o;
      return num==s.num&&name.equals(s.name);
     }
    }
    6、TreeSet類
     import java.util.*;
    public class Test
    {
      public static void printElements(Collection c)
         {
      Iterator it=c.iterator();
      while(it.hasNext())
      {
       System.out.println(it.next());
      }
         }
     public static void main(String args[])
     {
      //指定比較器
      TreeSet ts=new TreeSet(new Student.StudentComparator());
      ts.add(new Student(1,"zhangsan"));
      ts.add(new Student(2,"lisi"));
      ts.add(new Student(3,"wangwu"));
      ts.add(new Student(1,"zhangsan"));
      ts.add(new Student(2,"ahu"));
      printElements(ts);
     }
    }
    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)
          {
           result=s1.name.compareTo(s2.name);
          }
         return result;
        }
      }

     Student(int num,String name)
     {
      this.num=num;
      this.name=name;
     }
     public String toString()
     {
      return num+":"+name;
     }
     public int compareTo(Object o)
     {
      Student s=(Student)o;
      return num>s.num?1:(num==s.num?0:-1);
     }
    }

            注:HashSet是能過哈希算法實現(xiàn)的,其性能通常優(yōu)于TreeSet,只有當(dāng)需要排序功能時,使用后者。
    7、 HashMap類與TreeMap類
      HashMap類的實例:
    import java.util.*;
    public class Test
    {
     public static void printElements(Collection c)
     {
      Iterator it=c.iterator();
      while(it.hasNext())
      {
       System.out.println(it.next());
      }
     }
     public static void main(String args[])
     {
      HashMap hm=new HashMap();
      hm.put("one","zhangsan");
      hm.put("two","lise");
      hm.put("three","wangwu");
      System.out.println(hm.get("one"));
      System.out.println(hm.get("two"));
      System.out.println(hm.get("three"));
      //返回此映射中所包含的鍵的 set 視圖
      Set keys=hm.keySet();
      printElements(keys);
      System.out.println("Key:");
      //返回此映射所包含的值的 collection 視圖
      Collection values=hm.values();
      System.out.println("Value:");
      printElements(values);
      //返回此映射所包含的映射關(guān)系的 collection 視圖
      //在返回的集合中,每個元素都是一個 Map.Entry
      Set entry=hm.entrySet();
      printElements(entry);
      Iterator it=entry.iterator();
      while(it.hasNext())
      {
       Map.Entry me=(Map.Entry)it.next();
       System.out.println(me.getKey()+":"+me.getValue());
      }
     }
    }
    注:HashMap(對key散列)一般比TreeMap(據(jù)key排序)速度要快,只有需要排序功能時才需要后者。TreeMap與HashMap的實現(xiàn)類似,實例免。

    8、 Properties類

    import java.io.*;
    import java.util.*;
    public class Test
    {
     public static void main(String args[])
     {
      Properties pps1=System.getProperties();
      pps1.list(System.out);
      Properties pps=new Properties();
      try
      {
       //w.ini中存儲的是形如"copyright=20080804"的鍵值對
       //讀寫配置信息
       pps.load(new FileInputStream("w.ini"));
       Enumeration enumm=pps.propertyNames();
       while (enumm.hasMoreElements())
       {
        String strKey=(String)enumm.nextElement();
        String strValue=pps.getProperty(strKey);

        System.out.println(strKey+"="+strValue);
       }
      }
      catch (Exception e)
      {
       e.printStackTrace();
      }
     }
    }

    注:同步之外,ArrayList代替Vectior,HashMap代替Hashtable,LinkedList代替Stack
    主站蜘蛛池模板: 久久久久久久久久国产精品免费 | 亚洲丶国产丶欧美一区二区三区 | 在线播放免费播放av片| 又大又硬又爽免费视频| 亚洲国产精品无码久久98| 曰皮全部过程视频免费国产30分钟 | 91久久精品国产免费一区| 在线观看亚洲免费| 久久久久久亚洲精品无码| 成人无码WWW免费视频| 亚洲精品无码成人AAA片| 日韩视频免费在线观看| 久久丫精品国产亚洲av不卡| 成人免费夜片在线观看| 国产精品亚洲视频| 亚洲一线产品二线产品| 日韩高清免费在线观看| 美女又黄又免费的视频| 国产成人精品日本亚洲专区61| 国产午夜无码精品免费看动漫| 亚洲第一成年网站大全亚洲| 窝窝影视午夜看片免费| 亚洲无线观看国产精品| 8x8×在线永久免费视频| 亚洲乱色熟女一区二区三区蜜臀| 日韩在线不卡免费视频一区| 亚洲国产中文在线二区三区免| 久久成人免费电影| 亚洲熟妇自偷自拍另欧美| 亚洲综合亚洲综合网成人| 日韩av无码久久精品免费| 亚洲爆乳少妇无码激情| 国产精品亚洲精品日韩已满| 午夜性色一区二区三区免费不卡视频 | 女人18毛片a级毛片免费| 乱爱性全过程免费视频| 亚洲综合久久成人69| 婷婷亚洲天堂影院| 在线观看国产一区亚洲bd| 最近免费中文字幕大全高清大全1| 亚洲字幕在线观看|