将具有int []数组的程序转换为数组列表

时间:2014-02-20 02:20:04

标签: java arrays

我想知道数组列表是否各自的方法与int[]数组的功能相同。那么myArray[index]之类的内容会与myArray.get(index)相同(假设myArray是第二个中的数组列表)?

更多例子:

myArray.length = myArray.size()

如果是这样,我需要将代码从int[]数组转换为数组列表。 (顺便说一下,myArray是私有的int[]

public boolean deleteZeros()
{
    int rightZero = -1;     
    for(int position1 = 0; position1 < myArray.length; position1++)
    {
        if(myArray [position1] == 0)
        {
            rightZero = position1;
        }
    }

    if(rightZero == -1)
        return false;

    int [] temp  = new int [myArray.length - rightZero -1];

    for(int position2 = 0;  position2 < temp.length; position2++ )
    {
        temp [position2] = myArray [rightZero + 1 + position2];
    }

    numMoves += 1;

    myArray = temp;

    return true;
}

那个代码会是这样的吗? (将myArray替换为myArrayList并修复相应的方法后)

public boolean deleteZeros()
{
    int rightZero = -1;     
    for(int position1 = 0; position1 < myArrayList.size(); position1++)
    {
        if(myArrayList.get(position1) == 0)
        {
            rightZero = position1;
        }
    }

    if(rightZero == -1)
        return false;

    int [] temp  = new int [myArrayList.size() - rightZero -1];

    for(int position2 = 0;  position2 < temp.length; position2++ )
    {
        temp[position2] = myArrayList.get(rightZero + 1 + position2);
    }

    numMoves += 1;

    for (int i = 0; i < temp.length; i ++)
    {
        myArrayList.set(i, temp[i]);
    }

    return true;
}

4 个答案:

答案 0 :(得分:3)

  

那么myArray [index]就像myArray.get(index)一样(假设myArray是第二个中的数组列表)?

  

更多例子:

     

myArray.length = myArray.size()

  

那个代码会是这样的吗? (用myArrayList替换myArray并修复相应的方法后)

是的,这对我来说都很好看。虽然,你可以尝试一下。


但是,可能出现的问题是您的temp数组与原始myArrayList的大小不同,因此在将所有ArrayList元素设置为临时元素时,有些ArrayList中的最后几个元素将保持不变。如果您需要澄清我的意思,或者您希望我为这个可能的案例提出解决方案,请告诉我。

答案 1 :(得分:0)

要将int[]转换为ArrayList,请使用

ArrayList<Integer> myArrayList = new ArrayList<Integer>(Arrays.asList());

您需要导入java.util.Arrays

答案 2 :(得分:0)

只需构建一个新的ArrayList,然后add逐个myArray中的ArrayListint[] myArray = new int[]{1,2,3}; List<Integer> myArrayList = new ArrayList<Integer>(myArray.length); for (int i = 0; i < myArray.length; i++) { myArrayList.add(myArray[i]); } 。示例代码在这里:

{{1}}

答案 3 :(得分:0)

列表还有一个myArray.subList(fromIndex, toIndex)方法,可以让您更轻松地剪切列表,而不是在最后添加循环。