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
- Java基礎語法吐血整理Java
- Java基礎知識整理之this用法Java
- 整理Java基礎知識--Calendar 類Java
- Java基礎異常整理(持續更新)Java
- Java基礎知識整理之註解Java
- Java面試之Java基礎問題答案口述整理Java面試
- Java基礎知識整理之程式碼塊Java
- 整理Java基礎知識--Number&Math類Java
- 思維導圖整理Java併發基礎Java
- Angular 基礎整理Angular
- Git基礎整理Git
- Java基礎知識整理之static修飾方法Java
- Java基礎面試題整理-50題(附答案)Java面試題
- Java-基礎語法20:Lambda&方法引用Java
- 快取基礎整理快取
- Java基礎22--物件序列化和反序列化Java物件
- Java基礎知識整理之static修飾屬性Java
- Java網路程式設計基礎學習與整理Java程式設計
- Java程式設計基礎20——異常&IO(File類)Java程式設計
- Python基礎知識整理Python
- Babel基礎知識整理Babel
- JS基礎知識整理JS
- 傳智黑馬java基礎學習——day22(File、遞迴)Java遞迴
- 零基礎快速學習Java技術的方法整理Java
- Java基礎面試題型整理,附帶答案詳解Java面試題
- Java基礎知識日積月累(Tip of the Day20)Java
- 轉載:JAVA企業面試題精選 Java基礎 11-20Java面試題
- laravel報錯的問題 42S01 420004 42S22]等...Laravel
- MySQL基礎20題(續前面的20題)MySql
- Servlet基礎知識點整理Servlet
- C++基礎知識整理C++
- Web前端基礎知識整理Web前端
- Java基礎-語法基礎Java
- 傳智黑馬java基礎學習——day20(集合Map)Java
- JAVA 基礎Java
- java基礎Java
- [Java基礎]Java