java容器概述

來源:互聯網
上載者:User

java容器的關係結構圖如下:

 

1. List

      List承諾可以將元素維護在特定的序列中,List介面在Collection的基礎上添加了大量的方法,可以在List的中間插入和移除元素。

     有兩種基本類型的List:

     1. ArrayList是實現了基於動態數組的資料結構,LinkedList基於鏈表的資料結構。 
    
2. 對於隨機訪問get和set,ArrayList覺得優於LinkedList,因為LinkedList要移動指標。 
    
3. 對於新增和刪除操作add和remove,LinedList比較佔優勢,因為ArrayList要移動資料。

 

ArrayList和LinkedList在效能上各有優缺點,都有各自所適用的地方,總的說來可以描述如下:
1.對ArrayList和
LinkedList而言,在列表末尾增加一個元素所花的開銷都是固定的。對ArrayList而言,主要是在內部數組中增加一項,指向所添加的元素,偶
爾可能會導致對數組重新進行分配;而對LinkedList而言,這個開銷是統一的,分配一個內部Entry對象。

2.在ArrayList的中間插入或刪除一個元素意味著這個列表中剩餘的元素都會被移動;而在LinkedList的中間插入或刪除一個元素的開銷是固定的。

3.LinkedList不支援高效的隨機元素訪問。

4.ArrayList的空間浪費主要體現在在list列表的結尾預留一定的容量空間,而LinkedList的空間花費則體現在它的每一個元素都需要消耗相當的空間

可以這樣說:當操作是在一列資料的後面添加資料而不是在前面或中間,並且需要隨機地訪問其中的元素時,使用ArrayList會提供比較好的效能;當你的操作是在一列資料的前面或中間添加或刪除資料,並且按照順序訪問其中的元素時,就應該使用LinkedList了。


2. Set

set不儲存重複的元素

 

package JavaCollectionObject;            import java.util.HashSet;      import java.util.Set;            public class JavaSet {          public static void main(String[]args){                            Set<Integer> setInt=new HashSet<Integer>();              //如果要排序,用new TreeSet<Integer>();              for(int i=0;i<10000;i++){                  int temp=(int)(Math.random()*1000);//                  setInt.add(temp);              }              System.out.println(setInt);          }      }  

 

如果要進行排序可以用TreeSet

TreeSet<String> tree = new TreeSet<String>(String.CASE_INSENSITIVE_ORDER);                  tree.add("china");                  tree.add("America");                  tree.add("Japan");                  tree.add("Chinese");                                   Iterator iter = tree.iterator();                  while(iter.hasNext())                  {                      System.out.println(iter.next());                  }   
輸出:
    1. America  
    2. china  
    3. Chinese  
    4. Japan 

 

3. Map

Key-Value的儲存方式

 

public class JavaMap {      public static void main(String[] args) {            Map<String,Long> m1 = new HashMap<String,Long> ();            m1.put("Chinese", new Long(100000));            m1.put("English", new Long(20000));            m1.put("French", new Long(3000));            m1.put("Korean", new Long(400));                        System.out.println("值為:"+m1.size());                        //因為Map的key不可能重複,所以,可以用Set資料結構來儲存            Set<String> keySet = m1.keySet();            Iterator<String> ikey = keySet.iterator();            while(ikey.hasNext()){             System.out.println("\t"+ikey.next());            }                        //因為Map的值有可能重複,所以不能用Set,要用Collection            Collection<Long> valueCol = m1.values();            Iterator<Long> ival = valueCol.iterator();            while(ival.hasNext()){             System.out.println("\t"+ ival.next());            }            //根據key,取出特定的值            System.out.println("The value for Key \"Korean\" is "+m1.get("Korean").toString());        }  

 

輸出:

值為:4

Korean

French

Chinese

English

400

3000

100000

20000

The value for Key "Korean" is 400

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.