Java的List是一個非常常用的數據結構,它提供了一系列操作來方便我們對列表元素的增刪改查。其中一個重要的操作就是`contains()`方法,這個方法用於判斷一個列表是否包含某個特定元素。本篇文章將詳細闡述Java List Contains方法的使用實例。
一、判斷列表是否包含某個元素
對於一個List列表,我們可以使用`contains()`方法來判斷是否包含某個元素。下面是一個示例代碼:
List<String> list = new ArrayList<>();
list.add("Java");
list.add("Python");
list.add("Ruby");
boolean containsJava = list.contains("Java");
boolean containsCsharp = list.contains("C#");
System.out.println("Does list contain Java? " + containsJava); // Does list contain Java? true
System.out.println("Does list contain C#? " + containsCsharp); // Does list contain C#? false
上面展示的代碼創建了一個字符串類型的List,然後使用`add()`方法往列表中添加了三個元素。接着調用`contains()`方法分別判斷了列表中是否包含字符串”Java”和”C#”,並打印出結果。我們可以看到,在上面的代碼執行過程中,方法`contains()`返回true代表該列表中存在該元素,否則返回false。
二、判斷複雜類型元素是否在列表中
在Java中,列表中的元素類型可以是複雜類型數據,如類、對象等等。那麼如果我們想判斷列表中是否包含某個複雜類型的元素,應該怎麼做呢?下面是一個示例。
class Person {
private String name;
public Person(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
List<Person> personList = new ArrayList<>();
personList.add(new Person("張三"));
personList.add(new Person("李四"));
boolean contains張三 = personList.contains(new Person("張三"));
System.out.println("Does personList contain 張三? " + contains張三); // Does personList contain 張三? true
上面的代碼中,我們聲明了一個Person類,並創建了一個名為”personList”的Person類型的List列表,分別添加了”張三”和”李四”兩個元素。然後我們調用`contains()`方法來判斷是否包含一個名為”張三”的對象,結果返回了true。
需要注意的是,我們判斷列表中是否包含某個元素時,要判斷的元素對象是否與列表中的元素對象內的屬性值完全相同,而不是簡單地比較引用。
三、自定義類的Contains方法
在Java中,自定義的類可以重寫`equals()`方法來實現對象比較。那麼對於自定義類,我們如何才能讓`contains()`方法正確地判斷元素是否在列表中呢?我們可以自定義一個類的`contains()`方法,來實現我們的判斷邏輯。下面是一個示例:
class Fruit {
private String name;
public Fruit(String name) {
this.name = name;
}
public String getName() {
return name;
}
@Override // 重寫equals方法
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (obj == this) {
return true;
}
if (obj.getClass() != getClass()) {
return false;
}
Fruit other = (Fruit) obj;
return this.name.equals(other.name);
}
}
class Basket {
private List<Fruit> fruits = new ArrayList<>();
public void add(Fruit fruit) {
fruits.add(fruit);
}
public boolean contains(Fruit fruit) {
for (Fruit f : fruits) {
if(f.equals(fruit)) {
return true;
}
}
return false;
}
}
Basket basket = new Basket();
basket.add(new Fruit("apple"));
basket.add(new Fruit("banana"));
basket.add(new Fruit("orange"));
boolean containsApple = basket.contains(new Fruit("apple"));
System.out.println("Does basket contain apple? " + containsApple); // Does basket contain apple? true
上面的代碼中,我們自定義了一個`Fruit`類,它包含一個`name`屬性,然後創建了一個`Basket`類,其中含有一個Fruit類型的List列表。我們重寫了`Fruit`類的`equals()`方法來判斷兩個Fruit對象是否相等。此時,我們可以調用Basket類的`contains()`方法來判斷某個Fruit對象是否在列表中,方法中實現了對Fruit對象的比較,若其中有一個對象被判定為相等,則返回true。
四、使用Lambda表達式來判斷是否包含某元素
從JDK8開始,我們可以在List上使用Lambda表達式來完成條件篩選,下面是一個簡單的Lambda表達式實例:
List<String> list = Arrays.asList("Java", "Python", "Ruby");
boolean containsJava = list.stream().anyMatch(e -> e.equals("Java"));
System.out.println("Does list contain Java? " + containsJava); // Does list contain Java? true
上面的代碼中,我們將字符串類型的List列錶轉換為了一個流,然後使用`anyMatch()`方法和Lambda表達式來判斷該流是否包含字符串”Java”。
五、小結
在本篇文章中,我們詳細闡述了Java List Contains方法的使用實例。我們首先介紹了如何判斷列表是否包含某個元素,接着詳細講解了當元素是複雜類型數據時,如何判斷元素是否在列表中。我們還展示了如何使用自定義的類的`contains()`方法來實現判斷元素是否在列表中,以及如何使用Lambda表達式來完成條件判斷。相信通過本篇文章的講解,讀者已經掌握了Java List Contains方法的使用方法。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/255151.html
微信掃一掃
支付寶掃一掃