程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java集合知識點總結——博客園:執、著

Java集合知識點總結——博客園:執、著

編輯:關於JAVA

Java集合知識點總結——博客園:執、著。本站提示廣大學習愛好者:(Java集合知識點總結——博客園:執、著)文章只能為提供參考,不一定能成為您想要的結果。以下是Java集合知識點總結——博客園:執、著正文


數組與集合的區別:

Java中的數組是寄存同一類型數據的集合。數組可以寄存根本數據類型的數據,也可以寄存援用數據類型的數據,但數組的長度是固定的。

集合只能寄存援用數據類型的數據,不能寄存根本數據類型的數據,但集合的數目是可變的。

 

一切的集合類都寄存在java.util包中

 List接口是元素有序,可反復的集合,添加自定義類時需求重寫equals()辦法

ArrayList集合中,拔出一個元素時,列表需求將拔出點前面的一切元素向後挪動,而在刪除(remove())一個元素時,需求將被刪除元素前面的一切元素向前挪動

ArrayList集合允許一切的元素,包括null

例1:ArrayList的一些根本辦法

public class ArrayListText{

  public static void main(String[] args){

    Collection<String> collection=new ArrayList<String>();

    List<String> list=new ArrayList<String>();

    collection.add("1");

    collection.add("2");

    collection.add("3");

    list.add("A");

    list.add("B");

    list.add("C");

    list.addAll(0,collection);//向指定地位添加一個集合的一切元素

    System.out.println("list集合:"+list);

    List<String> subList=list.subList(1,5);

    System.out.println("subList集合:"+subList);

    System.out.println("設置list集合元素前::"+list.get(3));

    list.set(3,"Set");

    System.out.println("設置list集合元素後::"+list.get(3));

    System.out.println("list集合中,元素3的地位:"+list.indexOf("3")+",元素D的地位:"+list.indexOf("D"));//獲取指定元素在集合中的索引地位,若不存在則前往-1

    String arrString[]=list.toArray(new String[]{});//將集合轉為字符串數組

    for(String str:arrString){

      System.out.print(str+" ");

    }

    System.out.println("\nlist集合能否為空:"+list.isEmpty());

    list.clear();

    System.out.println("\nlist集合能否為空:"+list.isEmpty());

  }

}

後果:

list集合:[1,2,3,A,B,C]

subList集合:[2,3,A,B]

設置list集合元素前::A

設置list集合元素後::Set

list集合中,元素3的地位:2,元素D的地位:-1

1  2  3  Set  B  C

list集合能否為空:false

list集合能否為空:true

將數組轉換為ArrayList集合

String[] str={"W","E","C","O","M","E"};

List<String> list=Arrays.asList(str);

ArrayList<String> arrList=new ArrayList<String>();

arrList.addAll(list);

LinkedList是鏈表類,鏈表構造的優點是便於向集合拔出和刪除元素。由於在拔出或刪除元素時,不需求挪動任何元素,LinkedList也可以存在null元素

獲取表頭的辦法:

getFirst():僅僅是獲取表頭     element():獲取但不移除此鏈表頭   peek():獲取但不移除此鏈表頭    poll():獲取並移除此鏈表頭  pop():獲取並移除此鏈表頭

例2:LinkedList獲取鏈表頭

public class LinkedListText{

  public static void main(String[] args){

    LinkedList<String> link=new LinkedList<String>();

    link.add("1");

    link.add("2");

    link.add("3");

    link.addFirst("F");

    link.addLast("L");

    LinkedList<String> newLink=new LinkedList<String>(link);

    System.out.println("添加元素後:\n\t"+link);

    System.out.println("get()辦法獲取表頭:"+link.getFirst());

    System.out.println("運用get()辦法後:\n\t"+link);

    System.out.println("element()辦法獲取表頭:"+link.element());

    System.out.println("運用element()辦法後:\n\t"+link);

    System.out.println("peek()辦法獲取表頭:"+link.peek());

    System.out.println("運用peek()辦法後:\n\t"+link);

    System.out.println("poll()辦法獲取表頭:"+link.poll());

    System.out.println("運用poll()辦法後:\n\t"+link);

    System.out.println("pop()辦法獲取表頭:"+link.pop());

    System.out.println("運用pop()辦法後:\n\t"+link);

    System.out.println("******運用鏈表的先進先出*******");

    int  len=newLink.size();

    for(int i=0;i<len;i++){

      System.out.print(newLink.poll()+" ");

    }

  }

}

後果:

添加元素後:

[F,1,2,3,L]

get()辦法獲取表頭:F

運用get()辦法後:

[F,1,2,3,L]

element()辦法獲取表頭:F

運用element()辦法後:

[F,1,2,3,L]

peek()辦法獲取表頭:F

運用peek()辦法後:

[F,1,2,3,L]

poll()辦法獲取表頭:F

運用poll()辦法後:

[1,2,3,L]

pop()辦法獲取表頭:1

運用pop()辦法後:

[2,3,L]

*****運用鏈表的先進先出*****

F 1 2 3 L

 Set集合是元素無序,不可反復的集合,允許包括null元素,添加自定義類一定要重寫equals()和hashcode()辦法

HashSet類可以疾速地定位一個元素,但放到HashSet集合中的元素需求重寫equals()和hashcode()辦法,而TreeSet集合將放進其中的元素按序寄存

HashSet是按哈希算法來寄存集合中的元素的,運用哈希算法可以進步存取的效率

HashSet集合的特點:1.不能保證元素的陳列順序,集合中元素的順序隨時有能夠發作改動  2.集合中最多允許存在一個null元素  3.HashSet集合不是線程同步的

LinkedHashSet拔出功能略低於HashSet,但在迭代訪問Set裡的全部元素時有很好的功能,LinkedHashSet()運用鏈表維護了一個添加進集合中的順序,招致當我們遍歷LinkedHashSet集合元素時是按添加出來的順序遍歷的,但不能闡明它是有序的!

TreeSet類完成了java.util包中的Set接口和SortedSet接口,TreeSet集合中的元素在默許狀況下是升序排序

TreeSet集合的特點:1.向TreeSet中添加的元素必需是同一個類的  2.從小到大遍歷   3.自定義類沒有完成Comparable接口時,當向TreeSet中添加此對象時,報錯

例2:自定義類完成Comparable接口

class Person implements Comparable{

  private String name;

  private String age;

  public Person(){

  }

  public Person(String name,int age){

    this.name=name;

    this.age=age;

  }

  public int compareTo(Person per){

    if(this.age>per.age){

      return 1;

    }else if(this.age<per.age){

      return -1;

    }else{

      return this.name.compareTo(per.name);

    }

  }

  public String toString(){

    return ("姓名:"+name+",年齡:"+age+"\n");

  }

}

public class TreeSetDemo{

  public static void main(String[] args){

    Set<Person> tset=new TreeSet<Person>();

    tset.add(new Person("小強",21));

    tset.add(new Person("小偉",23));

    tset.add(new Person("小強",21));

    tset.add(new Person("小強",21));

    tset.add(new Person("小琴",20));

    tset.add(new Person("小婷",20));

    System.out.println(tset);

  }

}

後果:

[姓名:小婷,年齡:20

,姓名:小琴,年齡:20

,姓名:小強,年齡:21

,姓名:小偉,年齡:23

]

集合的輸入:1.Iterator:迭代器輸入(提供遍歷各種集合類型的迭代器)   2.foreach:JDK1.5新增的輸入

迭代刪除:

Iterator<String> it=link.iterator();

while(it.hasNext){

  it.next();

  it.remove();

}

正文:在調用remove()辦法前需求運用next()辦法指定要刪除的元素,否則運轉時將發生IllegalStateException異常

 Map接口提供的是key-value的映射,其中key不允許反復,每一個key只能映射一個value,常用String類作為Map的鍵

一個key-value對是一個Entry,一切的Entry是用Set寄存的,不可反復。key是用Set來寄存的,不可反復,value是用Collection寄存的,可反復

Map.Entry接口是靜態的,所以可以直接運用”內部類.外部類“的方式調用

HashMap類是完成Map集合,關於元素的添加和刪除有著較高的效率。HashMap類提供一切可選的映射操作,並允許運用null值和null鍵,但必需保證鍵是獨一的,HashMap是非同步的,也不保證映射順序

例3:獲取Map集合中的全部key和value

public class HashMapDemo{

  public static void main(String[] arg){

    Map<Integer,String> map=new HashMap<Integet,String>();

    map.put(1,"清華大學");

    map.put(2,"北京大學");

    map.put(3,"復旦大學");

    map.put(4,"武漢大學");

    map.put(5,"中國科技大學");

    map.put(6,"中國礦業大學");

    Set<Integer> set=map.keySet();

    Iterator<Integet> itKey=set.iterator();

    System.out.println("Map集合中全部的key:");

    while(itKey.hasNext()){

      System.out.print(itKey.next()+" ");

    }

    System.out.println();

    Collection<String> c=map.values();

    Iterator<String> itValue=c.iterator();

    System.out.println("Map集合中全部的value:");

    while(itValue.hasNext()){

      System.out.print(itValue.next()+" ");

    }

  }

}

後果:

Map集合中全部的key:

1 2 3 4 5 6

Map集合中全部的value:

清華大學 北京大學 復旦大學 武漢大學 中國科技大學 中國礦工大學

例4:運用Iterator輸入Map集合

public class hashMapDemo{

  public static void main(String[] args){

    Map<Integer,String> map=new HashMap<Integet,String>();

    map.put(1,"清華大學");

    map.put(2,"北京大學");

    map.put(3,"復旦大學");

    map.put(4,"武漢大學");

    map.put(5,"中國科技大學");

    map.put(6,"中國礦業大學");

    Set<Map.Entry<Integer,String>> set=map.entrySet();

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

    System.out.println("Key--------Value");

    while(it.hasNext()){

      Map.Entry<Integer,String> mapEntry=it.next();

      System.out.println(""+mapEntry.getKey()+"-------"+mapEntry.getValue());

    }

  }

}

後果:

key------value

1-----清華大學

2-----北京大學

3-----復旦大學

4-----武漢大學

5-----中國科技大學

6-----中國礦業大學

運用foreach輸入:

for(Map.Entry<Integet,String> mapEntry:map.entryKey()){

  System.out.println(""+mapEntry.getKey()+"-------"+mapEntry.getValue());

}

TreeMap類不但完成了Map接口,還完成了SortedMap接口,因而,TreeMap集合中的映射關系具有一定的順序性。與HashMap相比,TreeMap集合對元素的添加、刪除和定位映射功能較低

Collections類可以對集合的元素停止排序、反序、去極值、循環移位、查詢和修正等功用,還可以將集合對象設置不可變、對集合對象完成同步控制等辦法。

Collections類所提供的辦法均為靜態辦法,可以直接經過“類名.辦法()"的方式調用

Collections常用辦法:addAll(Collection c,T...elements)--Collections.addAll(list,"1","2","3")  binarySearch(List list,T key)-運用此辦法前必需先運用sort(List list,Comparator c)辦法停止排序  copy(List dest,List src)//將src集合中的一切元素復制到dest集合中  fill(List list,T obj)//運用指定元素交換指定集合中的一切元素  max(Collection coll) max(Collection coll,Comparator c)  replaceAll(List list,T oldVal,T newVal)//運用另一個元素替代集合中指定的一切元素  reverse(List list) 

Stack-棧是一種特殊的線性表,它僅限於在表尾停止元素的添加與刪除操作。棧的表尾成為棧頂,表頭成為棧底。棧是采用“先進後出”的數據存儲方式,若棧中沒有任何元素,則成為空棧。棧是Vector的子類

empty()//判別該棧能否為空,若為空前往true  peek()//獲取棧頂元素,但不刪除它  pop()//獲取棧頂元素,並刪除它  push()//將元素添加到棧頂中  search()、、查找指定元素在棧中地位,起始地位為1,不是0

Hashtable類是Map的子類,是JDK1.0是呈現的,Hashtable類是同步的,線程平安的,不允許寄存null鍵和null值,其他功用與HashMap相似

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved