将Array更改为ArrayList

时间:2017-03-02 12:02:43

标签: java arrays arraylist

我试图在数组中找到重复的元素。我已经使用遍历数组解决了它。但现在我想将数组转换为arraylist并使用包含arraylist的关键字。

我无法将数组转换为arraylist并使用contains关键字。请查看以下代码:

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]);
    }
}

3 个答案:

答案 0 :(得分:1)

您的代码存在许多问题:

  • 您正在创建ArrayList<int[]>,即int数组的数组列表。此列表包含一个数组,即您从该数组开始的数组。我不认为这是你的意图。我的猜测是你想要一个包含数组中数字的ArrayList<Integer>。 khelwood的链接可以帮助你。
  • 您尚未声明ilen。我建议你使用for (int i = 0; i < arr.length; i++)
  • arrlist.contains(arr[i])始终返回false,因为数组列表不能包含数字(不搜索数组中的数字)。这是ArrayList的设计问题,您可以询问它是否包含错误类型的元素(有历史原因)。如果你按照我的建议将arraylist更改为ArrayList<Integer>,那么它就可以了。
  • 一旦您完成上述工作,arrlist.contains(arr[i])将始终返回true,因为数组中的每个数字都在数组列表中,也是不重复的数字。

答案 1 :(得分:0)

这里你的arrlist变量是int []类型。这里你的arrlist大小是1(整个输入数组作为单个条目)。

因此,您只能使用arrlist的contains方法检查列表中是否存在任何整数数组。 if(arrlist.contains(arr)) //在您的情况下返回true

答案 2 :(得分:0)

找到一个更容易的方式就是这个:

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 ......