⑴ java 判斷一個數組中是否有重復的元素
使用一個臨時list,藉助list.contains判斷當前數組的值是否存在於list中,如果不存在則加入到list中,如果存在則記錄出來。有點像把一個籃子中的撞球放到另一個空籃子中,如果籃子裡面已經有的就不要再放進去了,沒有的,一個個放進去。說到底就是個遍歷和存在性判斷問題。
⑵ java判斷數組中是否包含
importjava.util.Arrays;
publicclassTest_Array{
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
int[]test={1,6,3,8,9,2,5};
Arrays.sort(test);//首先對數組排序
intresult=Arrays.binarySearch(test,5);//在數組中搜索是否含有5
System.out.println(result);//這里的結果是3
}
}
上面是一種辦法 當然辦法還多 比如你還可以把它 轉成 list容器 然後調用 contains方法
甚至你可以自己封裝個方法 循環一遍...
⑶ 在Java中判斷數組中包含某個元素的幾種方式的比較
直接上代碼:
package test.contain.lishaojie;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
public class TestContain {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String[] arr = new String[] { "DD", "CC", "DD", "FF", "KK"};
String target ="A";
int times = 1000;//次數
//轉換成list方式
long startTime = System.currentTimeMillis();
for (int i = 0; i < times; i++) {
ByList(arr, target);
}
long endTime = System.currentTimeMillis();
long ration = endTime - startTime;
System.out.println("list方式: " + ration / 1000000);
//轉換成set方式
startTime = System.currentTimeMillis();
for (int i = 0; i < times; i++) {
BySet(arr, target);
}
endTime = System.currentTimeMillis();
ration = endTime - startTime;
System.out.println("set方式: " + ration / 1000000);
//直接循環方式
startTime = System.currentTimeMillis();
for (int i = 0; i < times; i++) {
ByForLoop(arr, target);
}
endTime = System.currentTimeMillis();
ration = endTime - startTime;
System.out.println("循環方式: " + ration / 1000000);
//二分法查找
startTime = System.currentTimeMillis();
for (int i = 0; i < times; i++) {
ByArraysBinarySearch(arr, target);
}
endTime = System.currentTimeMillis();
ration = endTime - startTime;
System.out.println("二分法查找: " + ration / 1000000);
}
public static boolean ByList(String[] arr, String targetValue) {
return Arrays.asList(arr).contains(targetValue);
}
public static boolean BySet(String[] arr, String targetValue) {
Set<String> set = new HashSet<String>(Arrays.asList(arr));
return set.contains(targetValue);
}
public static boolean ByForLoop(String[] arr, String targetValue) {
for(String s: arr){
if(s.equals(targetValue))
return true;
}
return false;
}
public static boolean ByArraysBinarySearch(String[] arr, String targetValue) {
int a = Arrays.binarySearch(arr, targetValue);
if(a > 0)
return true;
else
return false;
}
}
運行結果如下:
list方式: 5
set方式: 22
循環方式: 2
二分法查找: 3
經過大量數據測試循環方式效率最高,其次是二分法,最後是list,和set因為因為將數組壓入Collection類型中,首先要將數組元素遍歷一遍,然後再使用集合類做其他操作。但是list方式明顯要比set方式快很多,這是為什麼呢?直接看代碼:首先
@SafeVarargs
@SuppressWarnings("varargs")
public static <T> List<T> asList(T... a) {
return new ArrayList<>(a);
}
返回的是ArrayList所以set方式還要進行一次操作將ArrayList轉換成set,
public HashSet(Collection<? extends E> c) {
map = new HashMap<>(Math.max((int) (c.size()/.75f) + 1, 16));
addAll(c);
}
之一addAll方法:
public boolean addAll(Collection<? extends E> c) {
boolean modified = false;
for (E e : c)
if (add(e))
modified = true;
return modified;
}
又一次進行了選環,所以效率比較低,binggo
⑷ (java)搜索一個字元數組中是否存在某個字元。如存在,返回該字元在數組中第一次出現的位置,否則返回-1.
public class Test {
public static void main(String[] args) {
String[] arr=new String[]{"a","b"};
System.out.println(find(arr, "c"));
}
public static int find(String[] arr,String str){
boolean flag=false;
for (int i = 0; i < arr.length; i++) {
if (arr[i].equals(str)) {
flag=true;
return i;
}
}
if (flag==false) {
return -1;
}
return -1;
}
}
⑸ 在Java中,如何檢測一個數組中是否包含某一個數據
在Java中,你需要確定一個數組是否包含特定的數據,有多種方法可供選擇。以下是四種常見的實現策略:首先,你可以使用for循環遍歷數組,逐個比較元素,如以下代碼所示:
1.使用for循環
publicstaticbooleanuseLoop(String[]arr,StringtargetValue){
for(Strings:arr){
if(s.equals(targetValue)){
returntrue;
}
}
returnfalse;
}
另一種方法是將數組轉換為List,然後利用List的contains方法,代碼如下:
2.轉換為List並使用contains方法
publicstaticbooleanuseList(String[]arr,StringtargetValue){
returnArrays.asList(arr).contains(targetValue);
}
Set集合也可以用來檢測元素是否存在,由於Set不允許重復元素,所以這種方法適合於不需要重復元素的場景:
3.使用Set
publicstaticbooleanuseSet(String[]arr,StringtargetValue){
Set returnset.contains(targetValue); } 最後,如果你的數組是有序的,可以使用Arrays.binarySearch()方法進行二分查找,但請注意,它只適用於有序數組: 4.使用Arrays.binarySearch()方法(適用於有序數組) (String[]arr,StringtargetValue){ inta=Arrays.binarySearch(arr,targetValue); returna>=0; } 總的來說,選擇哪種方法取決於你的具體需求,如是否需要處理重復元素,數組是否有序等。在實際編程時,可以根據這些方法的優缺點來作出決定。
⑹ 在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"/> (6)java數組中存在擴展閱讀: 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"/> ⑺ java中怎麼判斷一個字元串是否存在數組中
有2種方法,第一種就是直接循環數組,逐個進行判斷。第二種就是先將數組轉換成list,再使用list的contains方法進行匹配判斷。 ⑻ java中數組有哪些
Java中的數組有以下幾類:
String[] arrStr = {"aser", "abc"};
for (String str : arrStr) {
if (str.contains("abc")) {
return true;
}
}
public static void main(String[] args) {
String aa []={"aaa","bbb","ccc","ddd"};
List<String> list=Arrays.asList(aa);
if(list.contains("aa")){
System.out.println("有aa");
}else{
System.out.println("沒有aa");
}
}
一、基本類型數組(Primitive Arrays)
在Java中,基本類型的數組是固定大小的數組,其元素類型是固定的。Java支持以下基本類型的數組:int數組、char數組、float數組、double數組、boolean數組等。此外,Java也支持其他基本數據類型對應的包裝類數組,如Integer數組等。這些基本類型的數組可以存儲相應的基本數據類型的數據。例如,int數組可以存儲整數數據。
二、對象數組(Object Arrays)
在Java中,對象數組是一種特殊的數組類型,可以存儲任何類型的對象引用。對象數組的元素可以是任何對象類型,包括自定義的類實例。創建對象數組時,需要指定元素的類型為Object。例如,Object[] arr = new Object[10];表示創建一個可以存儲10個對象的對象數組。需要注意的是,對象數組中存儲的是對象的引用,而非對象本身。
三、多維數組(Multi-dimensional Arrays)
除了上述的基本類型數組和對象數組外,Java還支持多維數組。多維數組可以看作是一個數組的數組的數組,具有多個維度。常見的多維數組有二維數組和三維數組等。多維數組的創建和使用方式較為復雜,需要指定每個維度的長度和元素類型。例如,int[][] matrix表示一個二維整型數組(矩陣)。每個元素又是一個整型數組,可以用於存儲行內數據。二維數組廣泛應用於矩陣運算和數據處理等場景。通過多維數組的嵌套循環可以方便地訪問和操作每個元素。在Java中創建多維數組的語法較為復雜,需要注意每個維度的初始化和訪問方式。多維數組的每一個維度都有自己獨立的存儲空間和管理方式。在進行操作時,需要根據具體的需求選擇合適的維度進行訪問和操作。此外,多維數組的創建和使用還需要考慮內存分配和性能優化等問題。因此在實際應用中需要根據具體情況進行選擇和實現。