Java語言中的集合架構總結

來源:互聯網
上載者:User

標籤:不能   tostring   ted   use   tag   ret   1.0   資料資訊   lis   

一、集合架構

  集合是ava語言中非常重要的API;

  用來儲存多個資料;

  實現了不同的資料結構。

  三大介面:

  Collection:所有集合類的根介面;List、set是常用的子介面,ArrayList、LinkedList、HashSet是其下常用的三個類。

  Map:映射介面,存放索引值對;HashMap是其下常用的類。

  Iterator:遍曆集合的迭代介面。

  Java的集合架構是由很多介面、抽象類別、具體類組成的,都位於java.util包中。

二、Collection介面

  1、概念

  Collection<E>介面

  Collection即集合,是所有集合類的根介面,同時Collection介面是一個泛型介面。

  方法:

    add(E):添加對象;

    Iterator<E> iterator():產生迭代器對象,進而可 以迭代集合中的元素;

    int size();擷取集合中元素數量(size實際大小)。

  2、Collection的子介面

     List:有序的集合,元素有序存入;

     Set:無序無重複的集合,即存入的元素不重複;

     Queue:隊列,jdk1.5版本新增介面,Queue實現了“先進先出”(FIFO)的儲存結構,具有所有集合基本操作,Queue還提供了一些新的插入、提取、查詢等方法。

三、Map介面

  1、Map介面應用

   Map中儲存的是索引值對Map<key,Value> ,Key值不允許重複,如果重複,則覆蓋。

  常用方法:

     put(K key,V value)該方法可以將key和value存到Map對象;

     get(Object key)該方法可以根據key值返回對應的value;

     size()返回Map對象中索引值對的數量。

  2、Map介面的實作類別

    HashMap較常用的Map集合類,key值的hashCode和equals保證元素唯一性;

    TreeMap不僅可以保證key不重複,還可以對value資料進行排序;

    HashTablejdk1.0中定義的類,實現同步。

四、List介面

  1、概念

   繼承了Collection介面,並且擴充出屬於自己的方法,List 集合中的元素都是與索引有關係的,因此List 集合擴充的方法都是與索引有關係的。

  例如: add(int index,E)……添加元素在所對應的 索引位置。

  2、List的實作類別

    ArrayList:數組列表,資料採用數組方式儲存(實際用的最多的集合);

    LinkedList:鏈表;

    Vector:jdk1.0中的集合,實現了同步。

     a、ArrayList

    ArrayList被稱為數組列表,資料採用數組的方式儲存,使用連續記憶體儲存,是Java語言中可變長度數組的實現。

  ArrayList的常用方法:

    add(Object  o);->集合中添加資料;

    remove(Object o)->刪除集合中的資料;

    add(int  index, Object element)->給集合中某個索引位置添加一個資料;

    get(int index)->擷取集合中某個位置的資訊。

  ArrayList的應用:

    基本使用:不使用泛型,目前很少用

     public class TestArrayList {

       public static void main(String[] args) {

        List list= new ArrayList();

        list.add("string");

        list.add(12);

           list.add(‘w‘);

      }

     }可以將任何類型對象都儲存進去。

    泛型的使用:對象中只能持有相同類型對象,否則將發生編譯錯誤。

    Test:(運行需要建立User類,寫出其有參構造,get、set方法)

     public class GenericsList {

     public static void main(String[] args) {

.    //建立使用者物件

    User user=new User("張三");

    User user1=new User("李四");

    //建立集合對象,存放使用者物件

    List<User> userList=new ArrayList<User>();

    userList.add(user);

    userList.add(user1);

     }

     }

     b、LinkedList

    LinkedList是以鏈表的方式存放的,每個節點上存放的是資料資訊。

  LinkedList的常用方法:

    add(E element)—向鏈表末尾添加一個新的節點,該節點中的資料是參數element指定的對象;

    add(int index, E element)—向鏈表的指定位置添加一個新的 節點,該節點中的資料是參數element指定的對象;

  擴充方法:

    addFirst(E element)—向鏈表的頭添加新節點,該節點中的資料 是參數element指定的對象;

    addLast(E element)—向鏈表的末尾添加新節點,該節點中 的資料是參數element指定的對象。

  LinkedList的應用:

    例如:

    public class TestLinkedList {

    public static void main(String[] args) {

    //建立使用者物件

 

    User user=new User("王星");

    //建立集合對象,存放使用者物件

    List<User> list=new LinkedList<User>();

    list.add(user);

     }

     }

     c、ArrayList和LInkedList的遍曆(迭代器遍曆(Iterator)-很少使用:通過集合返回迭代器)

    增強for迴圈:也是通過迭代器的方法擷取資訊

    public class GenericsList {

    public static void main(String[] args) {

    //建立使用者物件

    User user=new User("張三");

    User user1=new User("李四");

    //建立集合對象,存放使用者物件

    List<User> userList=new LinkedList<User>();

    userList.add(user);

    userList.add(user1);

      for(User userInfo:userList){

        System.out.println(userInfo);

      }

    }

    }

    for迴圈遍曆:通過索引值擷取所對應的資料資訊

    public class GenericsList {

    public static void main(String[] args) {

      //建立使用者物件

      User user=new User("張三");

      User user1=new User("李四");

      //建立集合對象,存放使用者物件

      List<User> userList=new ArrayList<User>();

      userList.add(user);

      userList.add(user1);

        for(int i=0;i<userList.size();i++){                    //(實際存放的數量)

          System.out.println(userList.get(i));

        }

     }

    }

五、Set介面

  1、概念

    繼承了Collection介面,Set中所儲存的元素是不重複的,但是是無序的,Set中的元素是沒有索引的。

  2、Set集合介面的實作類別

    HashSet:底層是雜湊碼值,基於HashMap實現的,調用equals方法比較,都返回false。(比較的是虛地址,可重寫equals方法使其同類中的兩個對象,並且將屬性值都賦值為相同的值,歸為同一個對象)

    TreeSet:元素不重複,並且元素實現了排序(通過實現Set的另外的子介面SortedSet介面實現排序)

          可以給Set集合中的元素進行指定方式的排序。儲存的對象必須實現Comparable介面。

  3、HashSet和TreeSet

    HashSet的常用方法:add(E o)將指定的元素添加到set。

    例如:(與ArrayList是相同的)

    public class TreeSetExemple {

    public static void main(String[] args) {

      User user1=new User("張華");

      User user2=new User("張星");

      Set userSet=new TreeSet();

      userSet.add(user1);

      userSet.add(user2);

      Set<User> userSet1=new HashSet<User>();

      userSet1.add(user1);

      userSet1.add(user2);

}

}

    TreeSet的常用方法:add(E o):將指定的元素添加到 set(如果尚未存在於該set中);

                first():返回已排序set中當前的第一個(最小)元素;

                last():返回已排序set中當前的最後一個(最大)元素。

    TreeSet中存放的對象需要實現Comparable

    例如:

    public class UserInfo implements Comparable<UserInfo> {

      private String name;

      private int age;

      public int getAge() {

      return age;

      }

      public void setAge(int age) {

        this.age = age;

      }

      public String getName() {

        return name;

      }

      public void setName(String name) {

        this.name = name;

      }

      @Override

      public int compareTo(UserInfo o) {             (判斷條件自己定義)

       if(o.getName().equals(name)){

        return 0;

      }else return 1;   

    }

     }

    public class TreeSetExemple {

    public static void main(String[] args) {

      UserInfo user1=new UserInfo();

      user.setName("張華");

      UserInfo user2=new UserInfo();

      user2.setName("王華");

      Set<UserInfo> userSet =new TreeSet<UserInfo>();

      userSet.add(user1);

      userSet.add(user2);

    }

    }

  4、HashSet和TreeSet的遍曆

     增強for迴圈

    public class SetExemple {

    public static void main(String[] args) {

      User user1=new User(“王輝");

      User user2=new User("qw");

      Set<User> userSet=newHashSet<User>();

      Set<User> userSet=new TreeSet<User>();

      userSet.add(user1); userSet.add(user2);

      //增強for迴圈遍曆

      for(User user:userSet ){

        System.out.println( user.getUserName());

      }

    }

    }

六、Map集合的常用實作類別

  1、HashMap

    HashMap中元素的key值不能重複,即彼此調用equals方法,返回為false。排列順序是不固定的。

   a、HashMap的常用方法

    put<key,value>—>存放對象;

    get(key);—>擷取key所對應的資料;

    keySet() —> 返回此映射中所包含的鍵的 set 視圖。

   b、HashMap的使用

    public class HashMapTest {

    public static void main(String[] args) {

      User user1=new User("王敏");

      User user2=new User("王輝");

      HashMap<String,User> map=new HashMap<String, User>();

      map.put(“001", user1);

      map.put(“002", user2);

    }

    }(運行需要建立User類,寫有參構造set、get、toString方法)

  2、TreeMap

   a、TreeMap的常用方法與HashMap類似

   b、TreeMap的應用

    適用於按自然順序或自訂順序遍曆鍵(key);

    TreeMap根據key值排序,key值需要實現Comparable介面,實現compareTo方法。TreeMap根據compareTo的邏輯,對 key進行排序

    User user1=new User("王敏");

    User user2=new User("王輝");

    TreeMap<String,User> tree=new TreeMap<String,User>();

    tree.put(“001", user1);

    tree.put(“002", user2);

    (根據字串的字典順序)

    TreeMap排序:

    public class ScortInfo implements Comparable<ScortInfo> {

      private int num; public int getNum() {

        return num;

      }

      public void setNum(int num) {

        this.num = num;

      }

      @Override

      public int compareTo(ScortInfo o) {

        Return new Integer(this.num).compareTo(o.getNum());

      }

      public ScortInfo(int num) {

        this.num = num;

      }

    }

    public class TreeMapTest {

      public static void main(String[] args) {

        User user1=new User("王敏");

        User user2=new User("王輝");

        TreeMap<ScortInfo,User> tree=new TreeMap<ScortInfo,User>();

        tree.put(new ScortInfo(12), user1);

        tree.put(new ScortInfo(23), user2);

      }

     }

  3、TreeMap和HashMap的遍曆

    public static void main(String[] args) {

      User user1=new User("王敏");

      User user2=new User("王輝");

      HashMap<String,User> map=new HashMap<String, User>();

      map.put(“001", user1);

      map.put(“002", use2);

      Set set=map.entrySet();

      Iterator<Entry<String, User>> it=set.iterator();

    while(it.hasNext()){

      System.out.println(it.next().getValue().getUserName());

    }

    TreeMap<String,User> tree=new TreeMap<String,User>();

      tree.put(“001", user1);

      tree.put(“002", user2);

      Set se=tree.entrySet();

      Iterator<Entry<String, User>> iter=se.iterator();

    while(iter.hasNext()){

      System.out.println(iter.next().getValue().getUserName());

    }

    }(虛擬碼)

Java語言中的集合架構總結

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.