java - 从 java 7 中的 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。
那么有什么方法可以构造一个通用函数,所以如果十进制值中有更多元素,那么它也可以被删除。
注意:字符串十进制值将始终驻留在偶数索引位置。
解决方案
您可以使用以下方法,它对我来说很好!
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class DecimalRemoval {
public static void main(String[] args) {
List<String> lst = Arrays.asList("5.0","99","5.5","100","6.0","101");
List<String> resultant = new ArrayList<>(lst.size());
for(String element: lst) {
if(! element.contains("."))
resultant.add(element);
}
System.out.println(resultant);
}
}
还附上我工作区的屏幕截图。
推荐阅读
- python - ffmpeg中的多个命名管道
- java - 我正在尝试进行 BFS 搜索,但运行时错误索引超出范围异常
- javascript - 节点:使用猫鼬的 try-catch 中的全局变量
- sql - 分区边界 ID(例如在 sys.partition_range_values 中)是否保证按分区范围排序?
- mysql - 在 Laravel 中重构合并查询
- python - 从 Bash 脚本执行时,Python 函数返回不同的值
- python - Scrapy 命令用于提取 Web 的特定字段
- r - 附录部分表格乱码(R-markdown)
- tcp - tcp/ip 堆栈(如 lwip)在哪里适合 OSI 模型?
- java - Spring Boot 测试 - 我如何用现有的父级声明父级