我正在编写一个方法,从字符串的ArrayList中删除一个元素,如果它具有给定的长度,并将删除的String放入包含字符串的数组中,并且我对如何混淆从List中删除后将元素插入到数组中。
我的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数组。
答案 0 :(得分:3)
不是首先创建一个数组,而是必须与列表本身一样长,而是再次使用列表暂时保存已删除的字符串。
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()]);
答案 1 :(得分:0)
只需在某个索引处指定值即可。
此外,remove
方法返回从列表中删除的值。
arr[I]=list.remove(I);
此外,您还需要在方法结束时返回arr。如果调用此方法的方法期望它提供的数组作为参数具有它赢得的元素,因为您在开头为它分配了一个新的引用。 此外,数组不会像列表一样填充,如果它不会从列表中删除每个元素,则会有间隙,数组并不像ArrayLists那样智能。
答案 2 :(得分:0)
由于数组是一个固定长度的结构,你必须在创建时指定长度,你不能直接将删除的元素插入到一个新数组中,因为你不知道数组中有多少个元素。
相反,您可以使用arraylist临时保留已删除的元素,并在迭代结束时将这些元素填充到新数组中(因为此时,您使用临时arraylist中的元素数知道数组的长度)。