在Java7中,数组从ArrayList中删除备用元素
我有一个包含以下元素的字符串数组
5.0,99,5.5,100,6.0,101
现在我要做的是删除所有字符串格式的十进制值,比如5.0,5.5
和6.0
所以我的最后一个数组应该包含元素99,100,101
到目前为止,我所做的是在下面的代码中显示的
public static String[] deleteElement(String[] str_array) {
//String[] str_array = {"item1","item2","item3"};
List<String> list = new ArrayList<String>(Arrays.asList(str_array));
list.remove("5.0");
list.remove("5.5");
list.remove("6.0");
return str_array = list.toArray(new String[0]);
}
我已经对这些值进行了硬编码,这是一种非常糟糕的做法,因为未来的值可能会超过当前值,所以我想通过使用index
来删除这些值
我也尝试过使用remove(index)
删除,甚至使用索引定位,比如0,2,4,但实际发生的是,删除5.0
后,元素向左移动,所以100进入第二个位置,在下一次迭代中,100被删除
有没有办法构造一个泛型函数,如果十进制值中有更多的元素,那么它也可以被删除
注意: 字符串十进制值将始终位于偶数索引位置
# 1 楼答案
一个简单的解决方案可以是:
ArrayList<String>
李>.
,则将其添加到列表中演示:
输出:
或者,你可以用你已经在做的方式来做,但这不是一种很有效的方式。由于您首先将所有元素添加到列表中,然后删除不需要的元素,因此它不如上面建议的那样高效
# 2 楼答案
我们已经穿过了
List
从list.size() -1
到0
所以这个数字不会排在前面
当你从
0
遍历到size of the list
然后如果你删除一个元素1
元素被跳过,因为列表中的size()
减少i
不断增加例如,“5.0”、“6.1”、“5.5”、“100”、“6.0”、“6.6”] 当你遍历
0
到size() - 1
i=0:
5.0
被看到并删除,然后列表就像["6.1","5.5","100","6.0","6.6"]
现在6.1
位于0
索引i=1:
5.5
被删除,然后列表就像["6.1","100","6.0","6.6"]
其中现在100
位于1
索引等等
但是当从
size-1
遍历到0
时,它将删除每个元素,而不必担心丢失任何decimal
数字自己尝试一下,你就会知道为什么它会起作用,为什么
0
到n-1
不起作用输出:
# 3 楼答案
现有答案有效,但比要求的更详细:
# 4 楼答案
对于Java 8用户, 最好的解决方案是使用Java lambda表达式
# 5 楼答案
也可以将数组流化,过滤掉不需要的值
印刷品
# 6 楼答案
你可以用下面的方法,它对我很好
还附上了我工作区的截图