【问题标题】:Remove an element from an ArrayList and move that element into an array java从 ArrayList 中删除一个元素并将该元素移动到数组中 java
【发布时间】:2015-01-21 04:22:38
【问题描述】:

我正在编写一个方法,该方法从字符串的 ArrayList 中删除一个元素,如果它具有给定的长度,并将删除的字符串放入包含字符串的数组中,我对如何插入元素有点困惑将它们从列表中删除后放入数组中。

我的ArrayList叫做list,它是我程序开头的一个实例变量。

public String[] removeOfLength(String [] arr, int wordLength)
{
    arr = new String[list.size()];
    for(int i = 0; i < list.size(); i++)
    {
        if(list.get(i).length == wordLength)
        {
            list.remove(i);
            //arr[i]
        }
    }
} 

我删除了元素,但我不知道如何将它插入到数组中。 该方法应该返回一个包含已删除字符串的字符串数组。

【问题讨论】:

  • 理想情况下,您应该接受String[] 或返回它。最好使用显式赋值返回它,因为它使代码的意图清晰。乍一看,很难看出我传递给方法的数组会被清除干净。

标签: java arrays


【解决方案1】:

不要先创建一个数组,它必须与列表本身一样长,而是再次使用一个列表来临时保存删除的字符串。

List<String> removedStrings = new ArrayList<String>();
for(int i = 0; i < list.size(); i++)
{
    if(list.get(i).length == wordLength)
    {
        removedStrings.add(list.remove(i));
    }
}

然后在方法结束时将列表转换为数组

return removedStrings.toArray(new String[removeStrings.size()]);

【讨论】:

    【解决方案2】:

    只需在某个索引处分配值。 remove 方法还返回从列表中删除的值。 arr[I]=list.remove(I);

    您还需要在方法结束时返回 arr。而且,如果调用此方法的方法期望其作为参数提供的数组具有元素,则它不会包含元素,因为您在开始时为其分配了新的引用。 此外,数组不会像列表一样填充,如果它没有从列表中删除每个元素,就会出现空白,数组不像 ArrayLists 那样聪明。

    【讨论】:

      【解决方案3】:

      由于数组是一个固定长度的结构,你必须在创建时指定长度,你不能直接将删除的元素插入一个新数组,因为你不知道数组中有多少元素。

      相反,您可以使用 arraylist 临时保留已删除的元素,并在迭代结束时将这些元素填充到新数组中(因为此时,您可以使用临时 arraylist 中的元素数知道数组的长度)。

      【讨论】:

        猜你喜欢
        • 2015-07-20
        • 2016-07-23
        • 1970-01-01
        • 1970-01-01
        • 2020-04-24
        • 2021-10-18
        • 2015-03-07
        • 2018-06-10
        相关资源
        最近更新 更多