日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

List、Set

發布時間:2025/3/20 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 List、Set 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

一、數據結構

1.什么是數據結構?

2.常見的數據結構

二、List接口

1.List接口的特點

2.List接口中的常用方法以及常用子類

3.ArrayList的數據結構以及使用

4.LinkedList的數據結構以及使用

5.LinkedList的常用方法

三、Set接口

1.Set接口的特點

2.Set接口中的方法以及常用子類

3.HashSet的數據結構和使用

4.哈希表結構的拓展

5.LinkedHashSet的數據結構和使用

6.可變參數

四、Collections工具類

1.Collections的介紹

2.常用功能方法

3.Comparable自然排序接口

4.Comparator比較器排序接口


一、數據結構

1.什么是數據結構?

容器中存儲數據結構的方式。

2.常見的數據結構

堆棧結構:先進后出

隊列結構:后進先出

數組結構:查詢快,增刪慢,在內存中是連續的

鏈表結構:查詢慢,增刪快,在內存中是不連續的

二、List接口

1.List接口的特點

(1)元素存取有序

(2)有索引

(3)集合中元素可重復

2.List接口中的常用方法以及常用子類

常用方法:

public void add(int index, E element) : 將指定的元素,添加到該集合中的指定位置上。

public E get(int index) :返回集合中指定位置的元素。

public E remove(int index) : 移除列表中指定位置的元素, 返回的是被移除的元素。

boolean remove(Object o) :從列表中刪除指定元素的第一個出現(如果存在)(可選操作)。

public E set(int index, E element) :用指定元素替換集合中指定位置的元素,返回值的更新前的元素。

常用子類:

ArrayList? ? ? ? ? ?LinkedList? ? ? ? ? ? ? ? ?Vector

3.ArrayList的數據結構以及使用

ArrayList沒有特有方法,方法和List接口中的方法一樣。

集合數據存儲的結構是數組結構。元素增刪慢,查找快。

思考題:

List集合中存儲的是Integer元素時,remove()方法調用的是哪個?

ArrayList<Integer> list = new ArrayList<>();list.add(1);list.add(2);list.add(3);list.add(4);//刪除角標1位置的元素list.remove(1);//刪除ArrayList集合中元素為1的元素//list.remove(Integer.valueOf(1));System.out.println(list); }

4.LinkedList的數據結構以及使用

集合數據存儲的結構是鏈表結構。方便元素添加、刪除的集合。

5.LinkedList的常用方法

public void addFirst(E e) :將指定元素插入此列表的開頭。

public void addLast(E e) :將指定元素添加到此列表的結尾。

public E getFirst() :返回此列表的第一個元素。

public E getLast() :返回此列表的最后一個元素。

public E removeFirst() :移除并返回此列表的第一個元素。

public E removeLast() :移除并返回此列表的最后一個元素。

public E pop() :從此列表所表示的堆棧處彈出一個元素。(和removeFist()一樣)

public void push(E e) :將元素推入此列表所表示的堆棧。(和addFirst()一樣)

public boolean isEmpty() :如果列表不包含元素,則返回true。

三、Set接口

1.Set接口的特點

(1)無序

(2)不重復

(3)無索引

2.Set接口中的方法以及常用子類

Set接口包括其實現類都沒有特有方法。與Collection接口完全一樣。

常用子類:

HashSet? ? ? ? ? ? ? ?LinkedHashSet? ? ? ? ? ? ? ? ?TreeSet

3.HashSet的數據結構和使用

底層使用哈希表,查詢快,增刪快

面試題:

向哈希表集合中添加重復元素時,并沒有覆蓋原有重復元素,根本沒有添加進去,add()方法返回的是false。

4.哈希表結構的拓展

(1)Java規定每一個對象都有一個哈希碼值,調用對象的HashCode()方法就可以拿到。

(2)Java中的地址值是假的

打印出來的地址值是哈希碼值的16進制體現

(3)Java中沒有真正的地址值,地址值在對象名中

但是打印對象名會調用對象的ToString()方法,打印不出來真實地址值

哈希表如何保證元素的唯一性?

只有兩個元素的哈希值相等,并且equals方法返回true,才判斷這兩個元素重復。

如果保存自定義元素,需重寫equals方法和HashCode方法。

5.LinkedHashSet的數據結構和使用

底層使用鏈表+哈希表(數組+鏈表+紅黑樹),查詢快,增刪快

LinkedHashSet是有序的,HashSet是無序的。

6.可變參數

在JDK1.5之后,如果我們定義一個方法需要接受多個參數,并且多個參數類型一致,

可變參數的本質是數組。

我們可以對其簡化成如下格式:

修飾符 返回值類型 方法名(參數類型... 形參名){ }

等價于

修飾符 返回值類型 方法名(參數類型[] 形參名){ }

注意:

(1)如果在方法書寫時,這個方法擁有多參數,參數中包含可變參數,可變參數一定要寫在參數列表的末尾位置。

(2)一個方法中只能有一個可變參數

四、Collections工具類

1.Collections的介紹

集合工具類,用來對集合進行操作

2.常用功能方法

public static <T> boolean addAll(Collection<T> c, T... elements) :往集合中添加一些元素。

public static void shuffle(List<?> list) 打亂順序:打亂集合順序。

public static <T> void sort(List<T> list) :將集合中元素按照默認規則升序排序。

static void reverse(List<?> list) 反轉指定列表中元素的順序。

3.Comparable<T>自然排序接口

public int compareTo(Student o)

強行對實現它的每個類的對象進行整體排序。這種排序被稱為類的自然排序,類的compareTo方法被稱為它的自然比較方法。只能在類中實現compareTo()一次,不能經常修改類的代碼實現自己想要的排序。

實現此接口的對象列表(和數組)可以通過Collections.sort(和Arrays.sort)進行自動排序,對象可以用作有序映射中的鍵或有序集合中的元素,無需指定比較器。

4.Comparator<T>比較器排序接口

public int compare(String o1, String o2) :比較其兩個參數的順序。

強行對某個對象進行整體排序。這種排序我們稱為比較器排序.可以將Comparator 傳遞給sort方法(如Collections.sort或 Arrays.sort),從而允許在排序順序上實現精確控制。還可以為那些沒有實現Comparable接口的對象的集合提供排序。

練習題:分別用ComparableComparator兩個接口對下列四位同學的成績做降序排序,如果成績一樣,那在成績排序的基礎上按照年齡由小到大排序。

List<Student> list = new ArrayList<>(); list.add(new Student("張三豐", 20, 90)); list.add(new Student("陳真", 22, 90)); list.add(new Student("葉問", 20, 99)); list.add(new Student("李小龍", 22, 100)); Collections.sort(list, (o1, o2) -> {int i = (int) (o2.getScore() - o1.getScore());if (i != 0) {return i;} else {return o1.getAge() - o2.getAge();} }); for (Student s : list) {System.out.println(s); }

?

?

總結

以上是生活随笔為你收集整理的List、Set的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。