① 在java中,如何檢測一個數組中是否包含某一個數據
在Java中,檢測一個數組是否包含某一個數據,通常有四種方法:
(1)for循環
(2)轉換為List,調用Arrays.asList(arr).contains方法
(3)使用Set
(4)使用Arrays.binarySearch()方法
下面為上述四種方法的具體代碼實現:
1、使用for循環
publicstaticbooleanuseLoop(String[]arr,StringtargetValue){
for(Strings:arr){
if(s.equals(targetValue))
returntrue;
}
returnfalse;
}
/iknow-pic.cdn.bcebos.com/d62a6059252dd42a816ca8e00e3b5bb5c9eab810"target="_blank"title="點擊查看大圖"class="illustration_alink">/iknow-pic.cdn.bcebos.com/d62a6059252dd42a816ca8e00e3b5bb5c9eab810?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto"esrc="//www.craffts.com/pc_d62a6059252dd42a816ca8e00e3b5bb5c9eab810"/>
2、轉換為List,調用Arrays.asList(arr).contains方法
publicstaticbooleanuseList(String[]arr,StringtargetValue){
returnArrays.asList(arr).contains(targetValue);
}
/iknow-pic.cdn.bcebos.com/8cb1cb1349540923258eca359f58d109b2de4992"target="_blank"title="點擊查看大圖"class="illustration_alink">/iknow-pic.cdn.bcebos.com/8cb1cb1349540923258eca359f58d109b2de4992?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto"esrc="//www.craffts.com/pc_8cb1cb1349540923258eca359f58d109b2de4992"/>
3、使用Set
publicstaticbooleanuseSet(String[]arr,StringtargetValue){
SetStringset=newHashSetString(Arrays.asList(arr));
returnset.contains(targetValue);
}
/iknow-pic.cdn.bcebos.com/e61190ef76c6a7ef2dea016df0faaf51f2de66a9"target="_blank"title="點擊查看大圖"class="illustration_alink">/iknow-pic.cdn.bcebos.com/e61190ef76c6a7ef2dea016df0faaf51f2de66a9?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto"esrc="//www.craffts.com/pc_e61190ef76c6a7ef2dea016df0faaf51f2de66a9"/>
4、使用Arrays.binarySearch()方法
特別說明:binarySearch()二分查找僅適用於有序數組,如果不是有序數組,則報異常
(String[]arr,StringtargetValue){
inta=Arrays.binarySearch(arr,targetValue);
if(a0){
returntrue;
}else{
returnfalse;
}}
/iknow-pic.cdn.bcebos.com/8ad4b31c8701a18bec0bbb04932f07082938fe9d"target="_blank"title="點擊查看大圖"class="illustration_alink">/iknow-pic.cdn.bcebos.com/8ad4b31c8701a18bec0bbb04932f07082938fe9d?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto"esrc="//www.craffts.com/pc_8ad4b31c8701a18bec0bbb04932f07082938fe9d"/>
(1)listcontainsjava擴展閱讀:
Java種List列表的contains方法:
該方法是通過遍歷集合中的每一個元素並用equals方法比較是否存在指定的元素。
publicbooleancontains(Objecto){
IteratorEit=iterator();
if(o==null){
while(it.hasNext())
if(it.next()==null)
returntrue;
}else{
while(it.hasNext())
if(o.equals(it.next()))
returntrue;
}
returnfalse;
}
/iknow-pic.cdn.bcebos.com/64380cd7912397dd61e8334f5482b2b7d1a287ec"target="_blank"title="點擊查看大圖"class="illustration_alink">/iknow-pic.cdn.bcebos.com/64380cd7912397dd61e8334f5482b2b7d1a287ec?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto"esrc="//www.craffts.com/pc_64380cd7912397dd61e8334f5482b2b7d1a287ec"/>
② java中list集合中contains()的用法,啥意思
1、java中list集合中contains()的用法為:
public boolean list.contains(Object o)
意思為:當前列表若包含某元素,返回結果為true, 若不包含該元素,返回結果為false。
2、contains()方法實現的具體細節為:
當list調用contains()方法並傳遞一個元素時,會執行遍歷,逐個對比item是否等於該元素,當遍歷結束後,如果還沒有一個元素等於該元素的值,則返回false, 否則返回true
3、java中list集合中contains()用法的代碼示例為:
import java.util.ArrayList;
public class ArrayListDemo {
public static void main(String[] args) {
// 創建1個空列表
ArrayList<Integer> arrlist = new ArrayList<Integer>();
// 添加測試數據
arrlist.add(20);
arrlist.add(25);
arrlist.add(10);
arrlist.add(15);
// 列表是否包含元素 10
boolean res = arrlist.contains(10);
if (res == true) {
System.out.println("包含");
} else {
System.out.println("不包含");
}}}
(2)listcontainsjava擴展閱讀:
1、List的contains(obj)方法
實際上,List調用contains(Object obj)方法時,會遍歷List中的每一個元素,然後再調用每個元素的equals()方法去跟contains()方法中的參數進行比較,如果有一個元素的equals()方法返回true則contains()方法返回true,否則所有equals()方法都不返回true,則ontains()方法則返回false。因此,重寫了Course類的equals()方法,否則,testListContains()方法的第二條輸出為false。
2、Set的Contains(obj)方法
當調用HashSet的contains(Object obj)方法時,其實是先調用每個元素的hashCode()方法來返回哈希碼,如果哈希碼的值相等的情況下再調用equals(obj)方法去判斷是否相等,只有在這兩個方法所返回的值都相等的情況下,才判定這個HashSet包含某個元素。因此,需重寫Course類的hashCode()方法和equals()方法。
③ java中list有contains方法么
java中的list是有contains方法的。
contains方法用於判斷列表中是否包含指定元素。如果列表中包含指定元素,則返回true,否則返回false。
語法 contains(Object o)
o:要判斷是否存在於列表中的元素。
示例 本示例使用List介面的實現類ArrayList初始化一個列表對象list,並調用contains方法判斷列表中是否包含「蘋果」字元串。
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("草莓"); //向列表中添加數據
list.add("香蕉"); //向列表中添加數據
list.add("菠蘿"); //向列表中添加數據
for (int i = 0; i < list.size(); i++) { //通過循環輸出列表中的內容
System.out.println(i + ":" + list.get(i));
}
String o = "蘋果";
System.out.println("list對象中是否包含元素" + o + ":" + list.contains(o));
//判斷字元串中是否包含指定字元串對象
}
④ Java中List的五種去重方法及效率對比,你都用對了嗎
Java中List的五種去重方法及效率對比
在Java中,處理List去重問題時,有多種方法可供選擇。下面介紹五種常見的去重方法,以及針對它們的效率對比。注意,這五種方法在具體實現時,順序上可能會有所不同。
**方法一:使用兩個for循環實現List去重(有序)**
這種傳統方法需要雙重循環,檢查當前元素是否等於後續的所有元素,如果等於,則移除它。盡管操作邏輯直觀,但這種方法的效率較低,尤其是當List元素數量眾多時。
**方法二:使用List集合contains方法循環遍歷(有序)**
這種方法更加高效,因為它利用了contains方法的O(n)復雜度。遍歷列表,每次檢查當前元素是否存在於結果列表中,如果存在,則跳過;反之,添加到結果列表。
**方法三:使用HashSet實現List去重(無序)**
將元素添加到HashSet中自動實現了去重操作,由於HashSet內部採用哈希表實現,查找和插入操作的時間復雜度通常為O(1),所以這種方法在實際應用中效率較高。
**方法四:使用TreeSet實現List去重(有序)**
TreeSet同樣能通過哈希表實現高效的去重操作。但它保證了元素的自然排序,意味著輸出結果也是有序的。盡管比普通HashSet多了一層排序操作,但在有序列表去重中,這種方法相對高效。
**方法五:使用Java8新特性stream實現List去重(有序)**
利用Java8的stream流式操作,通過filter方法結合distinct過濾器可以實現去重,同時通過collect方法收集結果。這種方案簡潔優雅,但在處理大量數據時,效率可能不如前幾種方法。
**效率測試代碼**
執行測試代碼可以獲取更具體的數據比較結果,包括三種列表元素規模不同的情況,觀察它們的運行時間。
**結論**
總的來說,HashSet或TreeSet是去重時的高效選擇,尤其在需要無序結果時;在需要保持有序結果的場景下,TreeSet尤為適用。而Stream實現雖然簡便,但對於大規模數據集,速度上可能不如純迭代方法。
**最後**
感謝大家閱讀至此。希望本文能幫助你理解和選擇最適合去重場景的方法。如果有任何疑問或建議,歡迎在評論區留言。每份支持都是我前進的動力。期待更多交流和分享!
⑤ JAVA怎樣從一個對象集合裡面查找指定條件的對象
ArrayList底層使用數組實現的,只能先循環再判斷:
for(User user:users)
{
if(user.getName().equals("test"))
{
System.out.println("找到名字為test的User")
break;
}
}