gpt4 book ai didi

java - 从数组列表中删除某些值

转载 作者:行者123 更新时间:2023-11-30 11:21:27 27 4
gpt4 key购买 nike

我有一个 csv 文件中的数字列表,我已将其导出到 ArrayList。现在,问题是我的 ArrayList 是 String 而不是 double。我试过使用

ArrayList<Double> arr = new ArrayList<Double>();`

但它给了我一个错误。

我想删除 ArrayList 中小于 0.1 的任何数字。这是我的代码:

public class Example1
{
public static void main(String[] args) throws InvalidFormatException, IOException{
ArrayList arr=new ArrayList();
File f=new File("C:\\java\\marchcalllast.csv");
Scanner in=new Scanner(f).useDelimiter(",");

while(in.hasNext())
{
arr.add(in.next());
}


for (int i = 0; i < arr.size(); i++){
Double item = Double.valueOf(arr.get(i));
if (item < 0.1) {
arr.remove(i);
}
}
System.out.println(arr);

它给我以下错误:

错误:找不到适合 valueOf(java.lang.Object) 的方法 方法 java.lang.Double.valueOf(double) 不适用 (实际参数 java.lang.Object 不能通过方法调用转换为 double) 方法 java.lang.Double.valueOf(java.lang.String) 不适用 (实参java.lang.Object不能通过方法调用转换为java.lang.String)

最佳答案

如果您使用泛型,您的 IDE 会报错,然后您就可以很容易地发现问题所在。当您尝试将元素从 String 解析为 Double 时,它​​们实际上被编译器视为 Object(即使它们实际上是 String),您在这里错过了转换。

这是第一个修复:

public static void main(String[] args) throws IOException {
List<Double> arr = new ArrayList<Double>();
File f = new File("C:\\java\\marchcalllast.csv");
Scanner in = new Scanner(f).useDelimiter(",");

while (in.hasNext()) {
arr.add(Double.valueOf(in.next()));
}

for (Double item : arr) {
if (item < 0.1) {
arr.remove(item); // This is not allowed here, you are iterating on arr
}
}

System.out.println(arr);
}

现在,还有另一个错误:您无法在迭代集合时从集合中删除元素。要解决这个问题,例如,您可以使用第二个临时集合:

public static void main(String[] args) throws IOException {
List<Double> arr = new ArrayList<Double>();
File f = new File("C:\\java\\marchcalllast.csv");
Scanner in = new Scanner(f).useDelimiter(",");

while (in.hasNext()) {
arr.add(Double.valueOf(in.next()));
}

List<Double> toRemove = new ArrayList<Double>();
for (Double item : arr) {
if (item < 0.1) {
toRemove.add(item);
}
}
arr.removeAll(toRemove);

System.out.println(arr);
}

关于java - 从数组列表中删除某些值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22209551/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com