2017-03-02 177 views
-3

我正在嘗試在數組中找到重複的元素。我已經使用遍歷數組解決了它。但是現在我想將數組轉換爲數組列表並使用包含數組列表的關鍵字。將數組更改爲ArrayList

我不能夠轉換數組ArrayList和使用含有關鍵字。請看看在下面的代碼:

public void findDuplicate2() { 
    int arr[] = { 1, 2, 3, 4, 5, 3, 7, 5 }; 
    ArrayList<int[]> arrlist = new ArrayList<>(Arrays.asList(arr)); 

    for (i = 0; i < len; i++) { 
     if (arrlist.contains(arr[i])) 
      System.out.println(arr[i]); 
     else 
      System.out.println("no duplicate" + arr[i]); 
    } 
} 
+0

發佈你的編譯錯誤。 – khelwood

+0

是'len'用於initalization阻止一個實例變量嗎? –

+0

你想要一個'ArrayList '嗎?我想你更喜歡'ArrayList '。 –

回答

0

這裏您arrlist變量的類型爲int []。這裏你的arrlist大小是1(整個輸入數組作爲單個條目)。

所以,你只能通過檢查所有整數數組的存在,在列表中包含arrlist的方法。 如果(arrlist.contains(ARR)) //你的情況

+0

if(arrlist.contains(arr))將始終返回true。我怎樣才能創建陣列中存在相同元素arraylist(整數類型)? –

0

找到dublicates一個更簡單的方法返回true,是這樣的一個:

public void findDuplicate2(){ 
    int arr[] = {1,2,3,4,5,3,7,5}; 

    for (int i = 0; i < arr.length; i++) { 
     boolean dublicate = false; 
     for (int j = 0; j < arr.length; j++) { 
      if(arr[i] == arr[j] && i != j){ 
       System.out.println(arr[i]); 
       dublicate = true; 
       break; 
      } 
     } 
     if(!dublicate) 
      System.out.println("No dublicate " + arr[i]); 
    } 
} 

在你的代碼中ArrayList包含一個元素,數組ARR。你可以用

System.out.println(arrlist.get(0)); 
System.out.println(arrlist.get(1)); 

正確的方法檢查,這將是對ARR ArrayList中的每個元素傳遞...

+0

這我已經完成了。我想用arraylist。謝謝:) –

1

有許多與你的代碼的問題:

  • 你是創建一個ArrayList<int[]>,即數組的列表int。這個列表包含一個數組,也就是您開始使用的數組。我不認爲這是你的意圖。我的猜測是你想要一個包含數組中數字的ArrayList<Integer>。 khelwood的鏈接應該可以幫助你。
  • 您還沒有宣佈i也不len。我建議你使用for (int i = 0; i < arr.length; i++)
  • arrlist.contains(arr[i])總是返回false因爲數組不能包含一個數字(在陣列內的數字是不搜索)的列表。這是一個ArrayList的設計問題,您可以詢問它是否包含錯誤類型的元素(這是有歷史原因的)。如果按照上面的建議將數組列表更改爲ArrayList<Integer>,它將起作用。
  • 一旦你的工作上面,arrlist.contains(arr[i])總是返回true從數組中的每個數字將在數組列表,也即不重複的人。
+0

謝謝,1.是的,我想創建與數組中數組相同元素的整數列表。 2.我之前將元素更改爲整數,但是我得到編譯時錯誤(類型不匹配:無法從ArrayList 轉換爲ArrayList )3. len是我聲明數組已聲明的數組的長度。在這裏張貼我忘了複製。需要上述編譯時錯誤的幫助 –

+0

'數組。asList()'不適用於基元數組(如'int's)。這是編譯時錯誤的原因。若要將您的'int'數組轉換爲'ArrayList ',您可以看到[如何將int [\]轉換爲Java中的列表](http://stackoverflow.com/questions/1073919/how-to-convert (如已經提到的)或使用'ArrayList arrlist = new ArrayList <>(Arrays.stream(arr).boxed()。collect(Collectors.toList())); '(需要Java 8)。 –

+1

這解決了我的問題。 –