1. 在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="https://iknow-pic.cdn.bcebos.com/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="https://iknow-pic.cdn.bcebos.com/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="https://iknow-pic.cdn.bcebos.com/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="https://iknow-pic.cdn.bcebos.com/8ad4b31c8701a18bec0bbb04932f07082938fe9d"/>
(1)javafind數組擴展閱讀:
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="https://iknow-pic.cdn.bcebos.com/64380cd7912397dd61e8334f5482b2b7d1a287ec"/>
2. java,如何在數組中定位我們要尋找的那個元素
1 遍歷數組判斷
2 從開始就把數組的內容按照你要查找的那個條件的順序排列存儲,然後二分法查找。Arrays類有相關實現,可以參考。或者可以直接用,但是注意使用條件,很重要。
3. JAVA數組地址傳遞問題!
在Java中,參數的傳遞嚴格意義上講都是傳值的,只不過簡單很容易分清轎宴楚。而對於對象,有些復雜。
首先,在Java中是先聲明一個類的變數。然後,用類生成一個類的實例,也就是在內存中的類的實例區域,最後把這個區域的指針賦給類的這個變數。注意,變數中存的是指向對象的指針。
若是按傳址傳參數,是要改變這個對象變數所指的內存對象區域,也就是要在方法內把新對象賦給方法外的對象變橋羨量。但是,這在Java中辦不到。因為Java是把對象變數中的對象指針傳入方法,並沒有把變數本身的地址傳入方法;在方法中,會生成新變數接受這個對象的指針。所以,在Java方法中,可以改變當前對象中的內容,卻不能改變方法外邊變數的值,即所指向的對象。對於傳值、傳址的分析就是為了在閉消銀應用中少犯錯誤。其他是次要的。
明白沒有,是傳值而不是傳值的地址!地址沒有變,C當然不變了!
4. 在java中怎樣實現從一個數組(s1)中剔除與另一個數組(s2)相同的元素
方法一:將第一個數組的元素放到哈希表中,將第二個數組的元素也往哈希表中放,通過對比是否相同就可以判定那些元素是否需要保留。
方法二:將第一個數組當做查找源,將第二元素當做查找對象,採用二分查找法,逐個查找存在查找對象。
5. java通過數組值怎樣獲取數組下標
找來一個工具類的源碼,for循環內取值容
import org.apache.commons.lang.ArrayUtils
public static int indexOf(int[] array, int valueToFind, int startIndex) {
if (array == null) {
return INDEX_NOT_FOUND;
}
if (startIndex < 0) {
startIndex = 0;
}
for (int i = startIndex; i < array.length; i++) {
if (valueToFind == array[i]) {
return i;
}
}
return INDEX_NOT_FOUND;
}