Java集合

Colllection接口

List接口(列表)

List的特色

  • 有序性
  • 容許有重複的元素java

    List的經常使用方法

    方法名稱 描述 返回類型
    add(Ele) 參數類型爲Object (追加) boolean
    add(index,Ele) 指定位置添加元素 void
    addAll(Col) 參數爲Collection集合 (追加) boolean
    addALL(index,Col) boolean
    contains(Ele) boolean
    containsAll(Col) boolean
    clear() 移除列表中的全部元素 void
    get(index) 返回索引爲index的元素 void
    isEmpty() boolean
    size() 返回列表中元素個數 int
    remove(Ele/index) boolean
    removeAll(Col) boolean
    set(index,Ele) 將索引爲index的元素替換爲Ele 成功則,返回被被替換掉的元素
    toArray 返回一個對象數組(數組元素的順序與列表同樣) Object

ArrayList實現類

  1. 構造方法
ArrayList() 無參構造
ArrayLis(int Size) 指定初始容量
ArrayList(Col) 中的初始元素

Vector實現類

通常狀況使用ArrayList代替數組

LinkedList實現類

  1. 構造方法
LinkedList() 無參構造
LinkedList(Col) 指定初始元素

List實現類

ArrayList的底層爲數組LinkedList的底層爲雙鏈表
ArrayList和LinkedList的功能方法沒有同步

數組轉爲列表

  • public static List asList(T array) //方法簽名
public static void main(String[] args) {
        
        Integer[] array = {1,3,4,2,423,11,234,23,42,34,23};
        List lst = Arrays.asList(array);
        
        System.out.println( lst );
//      Iterator<Integer> iterator = lst.iterator();
//      while(iterator.hasNext()) {
//          System.out.println( iterator.next());
//      }   
    }

Set接口(集合)

Set的特色

  • 無序性
  • 不容許有重複的元素工具

    Set的經常使用方法

add(Ele) boolean
addAll(Col) boolean
clear() void
isEmpty() boolean
remove(Ele) boolean
removeAll(COl) boolean
size() int
contains(Ele) boolean
retainAll(Col) 將參數集合中有的元素從Set集合中移除 boolean
toArray() 對象數組

HashSet實現類

  1. 構造方法
HashSet() 無差構造,默認容量16
HashSet(int Size) 指定初始容量
HashSet(COl) 指定初始元素

HashSet容許添加null值但只能添加一次ui

LinkedHashSet實現類

  1. 特色
  • 採用雙鏈表實現,有序,元素不重複。
  1. 構造方法
LinkedHashSet() 無參構造方法 初始容量16
LinkedHashSet(int Size)
LinkedHashSet( COl )

SortedSet接口與TreeSet實現類

  1. 特色:
  • SortedSet繼承於Set接口,TreeSet爲SortedSet的一個實現類
  • SortedSet是一個Sorted類型
  • 實現該接口的類將按元素的自然順序自動排序,與插入的順序無關。
  1. 經常使用方法
first() 返回第一個元素(最小的元素) Object
last() .. Object
headSet(Ele) 返回一個包含小於Ele的SortedSet sortedSet
tailSet(Ele) ...大於 sortedSet
subSet(fromEle,toEle) 返回>=formEle&&<toEle sortedSet
TreeSet實現類
  1. 特色code

    自然有序,不管以什麼順序插入元素,在遍歷的時候都是有序的orm

    沒有采用哈希存儲策略,TreeSet採用的是二叉樹結構存儲對象

  2. 構造方法blog

方法名稱 描述
TreeSet() 無參構造,建立一個空的TreeSet對象
TreeSet( SortedSet s) 含有指定元素
TreeSet( Col ) 含有指定元素
TreeSet( Comparator c) 具備指定比較器的空TreeSet對象
定製SortedSet排序規則

實現Comparator接口(比較器)達到其餘排序需求。(重寫compare方法)排序

package test_02;
import java.util.*;
public class set_text {

    public static void main(String[] args) {
        
        Integer[] array = {1,3,4,2,4,11,234,23,42,34,23};
        List lst = Arrays.asList(array);

            Set<Integer> sortSet = new TreeSet<Integer>( new Agecompare() );
            sortSet.addAll(lst);
            System.out.println( sortSet );
        }

        public static class Agecompare implements Comparator<Integer> {
            public int compare(Integer o1, Integer o2) {
                return (int)o2-(int)o1; //逆序
        }
    }
}

Map接口

  1. 特色繼承

    • Map也被稱爲健/值集合。
    • 鍵和值都是對象。
    • 健對象用來在Map中惟一標識一個值對象。
    • 健對象在Map中不能重複出現。*

Map接口的經常使用方法

clear() void
containsKey(key) boolean
containsValue(value) boolean
get(key) 獲取健名爲key的健值 Object
isEmpty() boolean
put(key,value) 若是存在key,這將value添加進去並與其關聯,不存在這都添加而後關聯起來 Object,返回value
putAll(Map t) ... void
remove(key) 移除key所關聯的值value,並將其值value返回 Object
size() 返回鍵值對的個數 int

HashMap 實現類

  1. 特色:
  • 該類經過對鍵計算哈希碼來決定值的存儲。
  • 鍵值容許爲nul
  • 無序
  1. 構造方法
方法名 描述 返回值類型
HashMap() 無參構造,初始容量爲16
HashMap(Map m) 指定初始內容

Hashtable實現類

通常狀況用HahMap代替

LinkedHahMap實現類

  1. 特色
  • 經過雙鏈表的方式實現Map
  • Oredered類型
  • 插入刪除效率比HashMap低。
  • 順序存儲
  1. 構造方法
LinkedHashMap() 無參構造
LinkedHashMap(int Size)
LinkedHashMap(Map m)

SortedMap接口與TreeMap實現類

  1. 特色
  • SortedMap爲一個繼承於Map的接口,TreeMap爲SortedMap的一個實現類。
  • 實現SortedMap的接口類無論以什麼順序插入元素,都會按鍵的自然順序自動排序。
  1. SortedMap的經常使用方法
firstKey() 返回SortedMap中第一個對象(最小的元素) Object
lastKey()) ...最大.. Object
headSet(Ele) SortMap
TrailSet(Ele) SortMap
subSet(formElE,lastEle) SortedMap

TreeMap實現類

  1. 特色
  • 自然有序(一鍵名爲依據)
  1. 構造方法
TreeMap() 無參構造,建立一個空的TreeMap對象
TreeMap(SortedMap s) 指定初始元素
TreeMap(Map c)
TreeMap(COmparator c) 指定比較器

java.uitl.Stack
繼承於Vector類,利用Vector實現的

  1. Stack的經常使用方法
empty() booean
peek() 查看棧頂元素 Object
pop() 移除棧頂元素 Object
push(Ele) 將Ele元素進棧
search(Object 0 ) 返回指定元素Ele在棧中的位置,沒有返回-1 int

隊列

  • Deque接口
  1. Deque接口的經常使用方法
peek() 返回隊列中的第一個元素,隊列爲空則返回null Object
size() int
pop() 移除隊列中的第一個元素,隊列爲空則拋出異常 Object
push(Object o) 添加...,隊列滿時拋出異常 void
  • ArrayDeque實現類
  1. ArrayDeque的構造方法
ArrayDeque()
ArrayDeque(int size) 指定初始容量
ArrayDeque(COl) 指定初始元素

遍歷

  1. 特色
    • 對於List而言,能夠經過索引來遍歷
    • 對Set而言,可使用迭代器
    • 全部實現Collection接口的類都有一個Iterator的方法來獲取迭代器

Iterator

  1. Iterator的經常使用方法
HashNext() 判斷是否還有沒有遍歷的元素 boolean
next() 獲取到集合中下一個將要遍歷的元素,若是沒有要遍歷的元素則,拋出NoSuchElementException異常 Object
remove() 將下一個要遍歷的元素從遍歷的範圍中移除 void

集合的遍歷

  1. 迭代器遍歷:
package test_02;
import java.util.*;
public class set_text {
    public static void main(String[] args) {
        
        Integer[] array = {1,3,4,2,4,11,234,23,42,34,23};
        List lst = Arrays.asList(array);
        
        TreeSet<Integer> sortSet = new TreeSet<Integer>( lst );
        
        Iterator<Integer> iterator = sortSet.iterator();    //獲取迭代器
        
        while(iterator.hasNext()) {
            System.out.print(iterator.next()+ ",");
        }   
    }
}
  1. for-each遍歷:
package test_02;
import java.util.*;
public class set_text {
    public static void main(String[] args) {
        
        Integer[] array = {1,3,4,2,4,11,234,23,42,34,23};
        List lst = Arrays.asList(array);
        
        TreeSet<Integer> sortSet = new TreeSet<Integer>( lst );
        
        Iterator<Integer> iterator = sortSet.iterator();    //獲取迭代器
        
        for (Integer valeu : sortSet) {
            System.out.print(valeu + ", "); 
        }   
    }
}
  1. List的索引遍歷

    package test_02;
    import java.util.*;
    public class set_text {
    
        public static void main(String[] args) {
    
            Integer[] array = {1,3,4,2,4,11,234,23,42,34,23};
            List lst = Arrays.asList(array);
    
    
            for(int i=0 ;i<lst.size();i++) {
                System.out.print( lst.get(i)+ "," );
            }
        }
    }

映射的遍歷

1.Map提供的獲取鍵或值的方法

名稱 描述 返回值類型
keySet() 返回一個包含map中全部鍵的對象的集合 Set
values() 返回一個包含map中全部值對象的集合 Collection

集合元素的經常使用操做

  1. 描述

    java.util.Collections類是一個工具類,該類的方法都是靜態方法。
    方便對集合的排序,搜索等操做。

元素的排序

collections提供了兩個sort方法用於對元素的排序。

public static void sort(List list)
public static void sort(List list,comparator c)

搜索特定元素

collections提供了兩個binarySearch方法用來搜索列表中特定元素
binarySeach方法經常使用的是二分法搜索,只能對已有序的列表搜索。

public static int binarySearch(List list,Object Ele)
public static int binarySearch(List list,Object Ele,comparator c)

任意打亂元素的順序

collections提供了suffle方法來打亂列表中元素的順序。

public static void shuffle(List list)

其餘方法(靜態)

addAll(col,Object o) 將對象o添加到col( collection )集合中 boolean
copy(List ls1,List ls2) 將列表ls2中的內容複製到ls1中 void
disjoint(col_1,col_2) 比較col_1與col_2是否有相同的元素,沒有則返回false boolean
fill(List ls,Object o) 填充 void
reverse(List ls) 將列表ls反轉 void
swap(List ls,int i,int j) 交換ls列表中索引爲i和j所對應的值 void

hashCode方法

使用哈希時,本存儲的對象須要一個哈希碼(hash code 通常是一個整數)。
hashCode方法用於計算提供一個哈希碼。
工做原理:

進入哈希存儲以前,首先調用hashSet獲取一個哈希碼,來定位哈希桶
在哈希桶中,不一樣對象是按照線性表的方式存儲的
哈希碼決定了分離度,處理好分離度是提升效率的關鍵因素
  • eg: 在向HashSet集合添加(調用add方法)元素時,會首先調用hashCode方法來定位哈希桶,若是是空桶就會直接存進去,否者會調用equals方法來查看該桶中是否含有與其相同的對象,沒有則存進去,否者存儲失敗。
  • 因此一般狀況下,equals與hashCode要麼都重寫,要麼都不重寫。且equals爲true的兩個對象的hashCode必須相同,hashCode不相同的兩個對象的equals必須爲false。

相關文章
相關標籤/搜索