2020年7月9日22:20:42 java基礎整理
介面List:有序的集合(有序就是指的是怎麼儲存的,就怎麼拿出來)有索引,可儲存重複的元素(set是不允許儲存重複的元素)
List介面派系,繼承的是Collection介面,
下面有很多的實現類,
List介面的特點:有序,索引,可以重複元素
實現類,ArrayList,LinkedList
List介面中的抽象方法,有一部分方法和他父類Collection的方法是一樣的
List介面有自己特有的方法,帶有索引的功能
add(int index,E):將元素插入到列表的指定索引上
帶有索引的操作,防止越界的問題
程式碼實現:
public static void function(){
List<String> list = new ArrayList<String>();
list.add("a1");
list.add("a2");
list.add("a3");
System.out.println(list);
list.add(2,"itch");
System.out.println(list);
}
異常:IndexOutOfBoundsException:集合越界異常
ArrayIndexOutOfBoundsException:陣列越界異常
StringIndexOutOfBoundsException:字串越界異常
E remove(int index):移除指定索引上的元素(其中索引是不能寫錯的)
返回被刪除之前的元素
E set(int index,E):修改指定索引上的元素
返回被修改之前的元素
這個很有可能是面試題,就是可能讓你去寫,但是這個就是沒有結果的,這是異常的
public static void function(){
List<String> list = new ArrayList<String>();
list.add("a1");
list.add("a2");
list.add("a3");
Iterator<String> i = list.iterator();
while(i.hasNext()){
String s = i.next();
if(s.equals("a3")){//只有基本型別用的是==,引用型別用的是equals
list.add("A3");//ConcurrentModificationException:這個是迭代器的併發修改異常,就是在遍歷的過程中,使用了集合方法修改了集合的長度是不允許的
}
System.out.println(s);
}
}
堆疊:先進後出
佇列:先進先出
陣列:查詢元素快(通過索引可以快速的去查詢指定位置的元素)陣列的中的每個地址的位置都是連續的
弱點:就是增刪慢 陣列的最大的用途就是查詢
連結串列:就是存進去一個陣列,然後讓這個陣列去記住前面一個陣列的地址,缺點:查詢慢,優點:增刪快
其中陣列的用的是最多的,因為我們做的專案最多的就是查詢,這個陣列是佔有優勢的
ArrayList:(執行緒是不安全的)這是一個可變長度的陣列,就是如果我們用的是空參去設定的話,預設的長度就是10,同時我們自己也是可以去指定的,但是因為他是可變的我們是沒有必要去指定的
特性:這個儲存的結構是陣列結構,元素的增刪慢查詢快,由於我們日常開發中使用最多功能是查詢資料,遍歷資料,所以ArrayList是常用的集合。
LinkedList:(執行緒是不安全的)這是個單向列表,增刪快,查詢慢,提供了大量的首尾操作方法,
LinkedList子類的特有功能(如果是子類特有功能就是不能使用多型呼叫,所以使用linkedlist子類特有功能的時候不能使用的是多型)
addFrist(E):t新增到連結串列的開頭
addLast(E):新增連結串列的結尾
getFirst():獲取連結串列的開頭
getLast():獲取連結串列的結尾
注:這個會有獲取的異常,就是如果集合裡面沒有元素,他就會產生異常
所以就是要判斷一下的:if(!link.isEmpty()){
String first =link.getFirst();
String last = link.getLast();
}
E removeFirst():移除並返回列表的開頭
E removeLast():移除並返回列表的結尾
set:集合就是無序的,不重複的元素,學會hashset就是會map(set的底層本質就是map)
只能通過迭代和增強for去獲取,是無序的,就是你存進去是什麼樣子,取出來不一定是原來的樣子,裡面可以是null的元素。
set介面的特點:不重複元素,沒有索引,
set的介面的實現類是hashSet(雜湊表)
特點:無序集合,就是儲存和取出是不同的,沒有索引,也不儲存重複元素,
程式碼的編寫和ArrayList是完全一致的
程式碼:
public static void main(String[] args){
Set<String> set= new HashSet<String>();
set.add("dn");
set.add("cn");
set.add("wo");
//遍歷 迭代
Iterator<String> it = set.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
//增強for
for(String s:set){
System.out.println(s);
}
HashSet集合自身特點:
底層資料結構是雜湊表
儲存取出都比較快
執行緒不安全,執行速度比較快
hashset初始容量是16,其實我們一般是不需要去動的,不要將初始容量設定的太高,或者是將載入因子設定的太低,(載入因子就是陣列的長度(16*載入因子就是裡面放的表格的個數)如果超過這個個數就是會擴容的,要是沒要超過的話,就是遍歷)所以就是0.75是個比較折中的演算法,既可以達到查詢的快又可以節省資源,陣列擴容是一個非常浪費資源的過程,就是複製,所以很麻煩再雜湊(rehash)
物件的hash值,普通的十進位制整數
父類Object,方法public int hashCode()計算結果int整數
*/
public static void function(){
String s1=new String("abc");
String s2=new String("abc");
System.out.println(s1);//abc
System.out.println(s2);//abc
}
相關文章
- java基礎整理1Java
- Gartner:2020年全球5G基礎設施收入將達到42億美元
- (2020)JAVA基礎篇(一)Java
- 2020年最新整理-Java面試題大全Java面試題
- 【java基礎資料整理】Java
- (精華2020年5月22日更新) react基礎篇 元件的使用React元件
- 2020年面試整理面試
- Java基礎語法吐血整理Java
- Java for Android 基礎API整理JavaAndroidAPI
- 整理Java基礎知識--Calendar 類Java
- Java基礎知識整理之this用法Java
- 2020年12月-前端基礎-認識WEB前端Web
- Java基礎知識整理之註解Java
- Java基礎異常整理(持續更新)Java
- Java基礎複習,整理知識點Java
- Java面試之Java基礎問題答案口述整理Java面試
- 【Java面試】Java基礎知識面試題—2020最新版!Java面試題
- 2019年Java面試-基礎篇Java面試
- Java基礎面試題整理-50題(附答案)Java面試題
- 整理Java基礎知識--Number&Math類Java
- 思維導圖整理Java併發基礎Java
- Java基礎知識整理之程式碼塊Java
- Git基礎整理Git
- Angular 基礎整理Angular
- 2019年Java面試題基礎系列228道(3),查漏補缺!Java面試題
- 2019年Java面試題基礎系列228道(2),查漏補缺!Java面試題
- (精華)2020年6月28日 Canvas 基礎知識Canvas
- Python的最佳Docker基礎映象(2020年4月)PythonDocker
- Java基礎知識整理之static修飾方法Java
- 快取基礎整理快取
- CoSN:2022年基礎教育創新驅動力
- 都快2020年了,還不會Linux 基礎命令?Linux
- Gartner:預計2020年全球5G網路基礎設施的收入將達到42億美元
- Java基礎筆記20Java筆記
- Java基礎知識整理之static修飾屬性Java
- Java網路程式設計基礎學習與整理Java程式設計
- Java基礎面試題型整理,附帶答案詳解Java面試題
- 亞翔航空:2020年亞太地區航空基礎設施報告