<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

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

    3、 ArrayList:能夠自動(dòng)增長(zhǎng)容易的數(shù)組,其底層以對(duì)象數(shù)組的方式實(shí)現(xiàn)。
    code:
    import java.util.*;
    public class Test
    {
     public static void printElements(Collection c)
     {
      Iterator it=c.iterator();
      //remove方法是一個(gè)可選擇的方法,移去上次返回的對(duì)象
      //大部分集合框架類,都實(shí)現(xiàn)了接口的這個(gè)方法
      //it.next();
      //it.remove();
      while(it.hasNext())
      {
       System.out.println(it.next());
      }
     }
     public static void main(String args[])
     {
      ArrayList al=new ArrayList();
      //al.add("太陽(yáng)");
      //al.add("星星");
      //al.add("月亮");
      //添加對(duì)象元素
      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()返回一個(gè)固定列表
      List l=Arrays.asList(objs);
      System.out.println(l);
      //Iterator:通用的訪問(wèn)數(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的方法進(jìn)行排序,被排序?qū)ο笠獙?shí)現(xiàn)Comparable接口compareTo方法
      //Collections.sort(al);
      //指定比較器——實(shí)現(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:采用雙向鏈表實(shí)現(xiàn)的,可實(shí)現(xiàn)棧、隊(duì)列、雙向隊(duì)列

    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ù)本身,還有兩個(gè)引用。如果要經(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()哈希的鍵是地址
     //要為存放到散列表的各個(gè)對(duì)象同時(shí)定義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是能過(guò)哈希算法實(shí)現(xiàn)的,其性能通常優(yōu)于TreeSet,只有當(dāng)需要排序功能時(shí),使用后者。
    7、 HashMap類與TreeMap類
      HashMap類的實(shí)例:
    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 視圖
      //在返回的集合中,每個(gè)元素都是一個(gè) 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(對(duì)key散列)一般比TreeMap(據(jù)key排序)速度要快,只有需要排序功能時(shí)才需要后者。TreeMap與HashMap的實(shí)現(xiàn)類似,實(shí)例免。

    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中存儲(chǔ)的是形如"copyright=20080804"的鍵值對(duì)
       //讀寫配置信息
       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
    主站蜘蛛池模板: 亚洲一区二区三区播放在线| 精品女同一区二区三区免费站| 日韩亚洲人成在线| 亚洲精品乱码久久久久久蜜桃不卡| 暖暖日本免费在线视频| 无码精品A∨在线观看免费| 三年片在线观看免费观看大全动漫| 狠狠热精品免费观看| 亚洲色欲啪啪久久WWW综合网| 久久综合亚洲色HEZYO社区| 中文字幕第13亚洲另类| 亚洲精品色婷婷在线影院| 免费视频中文字幕| 成年女人免费视频播放77777 | 希望影院高清免费观看视频| 美女被免费网站91色| 香蕉视频亚洲一级| 99在线在线视频免费视频观看| 一级做a爰片久久毛片免费看| 亚洲日韩在线中文字幕综合 | 免费观看a级毛片| 日韩免费一区二区三区在线播放| 亚洲一区二区在线免费观看| 精品亚洲永久免费精品| 国产成人免费AV在线播放| 国产精品1024在线永久免费 | 亚洲大尺度无码专区尤物| 自拍偷自拍亚洲精品被多人伦好爽| 亚洲国产一区明星换脸| 啊v在线免费观看| 五月天婷亚洲天综合网精品偷| 国产无遮挡色视频免费视频 | 在线播放国产不卡免费视频| 成人免费网站久久久| a高清免费毛片久久| 国产精品免费看久久久香蕉| a级毛片在线免费| 日韩免费无码视频一区二区三区 | 亚洲gv猛男gv无码男同短文| 亚洲AV无码乱码在线观看裸奔| 亚洲AV福利天堂一区二区三 |