简体   繁体   English

使用lambdas将字符串arraylist转换为double arraylist

[英]conversion of string arraylist to double arraylist using lambdas

I need some help regarding converting string array list to double array list using java lambdas upto now I had tried these. 我需要一些有关使用java lambdas将字符串数组列表转换为双数组列表的帮助,直到现在为止我都尝试过这些。

List<Double> Doublevalues1 = valueItemsToList.stream().mapToDouble(Double::parseDouble).boxed().collect(Collectors.toList());

and this in general 这一般

 for(int j = 0; j< valueItemsToList.size();j++)
    {
         Doublevalues1.add(Double.parseDouble(valueItemsToList.get(j)));
         //Doublevalues.add(Double.valueOf(valueItemsToList.get(j)));
    }

can anyone tell me where I gone wrong This is not duplicate answer I tried all possibilites I had gone through the net but none of them gave me correct answer glad if you could help. 谁能告诉我我哪里出问题了。这不是重复的答案,我尝试了所有通过网络的可能性,但没有一个能给我正确的答案,如果您能帮助您,我会很高兴。 this is my complete code 这是我完整的代码

 public class Stock {
public static void main(String[] args) {
    // TODO code application logic here
    String buff[] = new String[4988];
    int i = 0;
    File file = new File("C:\\Users\\admin\\Desktop\\data.csv");
    try{
        FileInputStream fis = new FileInputStream(file);
        BufferedReader dis = new BufferedReader(new InputStreamReader(fis));
        String s;
        while ((s = dis.readLine()) != null) {
           // System.out.println(s);
            buff[i] = s;
            i++;
          // String[] s1 = s.split(",");
        }
    }
    catch(Exception e)
    {
         System.out.println("error happend at block try at fileinput");
    }
     //converting array string to arraylist
     List<String> valueItemsToList = Arrays.asList(buff);
     //valueItemsToList.forEach(System.out::println);
     List<Double> Doublevalues1 = new ArrayList<Double>();// valueItemsToList.stream().mapToDouble(Double::parseDouble).boxed().collect(Collectors.toList());
    for(int j = 0; j< valueItemsToList.size();j++)
    {
         Doublevalues1.add(Double.parseDouble(valueItemsToList.get(j)));
         //Doublevalues.add(Double.valueOf(valueItemsToList.get(j)));
    }
     Doublevalues1.forEach(System.out::println);
}
}

error: its little bit clumsy its here complete 错误:有点笨拙,这里完成

Exception in thread "main" java.lang.NullPointerException at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1838) at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110) at java.lang.Double.parseDouble(Double.java:538) at stock.Stock.main(Stock.java:53) C:\\Users\\admin\\AppData\\Local\\NetBeans\\Cache\\8.1\\executor-snippets\\run.xml:53: Java returned: 1 BUILD FAILED (total time: 2 seconds) java.lang.Double.parseDouble()上sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110)处sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1838)处的线程“ main”中的java.lang.NullPointerException异常Double.java:538)在stock.Stock.main(Stock.java:53)C:\\ Users \\ admin \\ AppData \\ Local \\ NetBeans \\ Cache \\ 8.1 \\ executor-snippets \\ run.xml:53:Java返回:1生成失败(总时间:2秒)

Agree with @bayou.io, either use ArrayList<String> in place of buff[] 同意@ bayou.io,可以使用ArrayList<String>代替buff[]

(because if the number of lines in your input file are less 4988 then you will get NullPointerExcetion and if you have more lines then you will get ArrayIndexOutOfBoundsException) (因为如果输入文件中的行数少于4988,则将得到NullPointerExcetion,如果行数更多,则将得到ArrayIndexOutOfBoundsException)

or place null check before String to Double conversion eg 或将null检查放在String到Double的转换之前,例如

for(int j = 0; j< valueItemsToList.size();j++)
{
    if(valueItemsToList.get(j) != null){ // NULL Check
        Doublevalues1.add(Double.parseDouble(valueItemsToList.get(j)));
        //Doublevalues.add(Double.valueOf(valueItemsToList.get(j)));
    }
}
List<String> valueItemsToList = Arrays.asList(buff);
     //valueItemsToList.forEach(System.out::println);
     List<Double> Doublevalues1 = new ArrayList<Double>();// valueItemsToList.stream().mapToDouble(Double::parseDouble).boxed().collect(Collectors.toList());
    for(int j = 0; j< valueItemsToList.size();j++)
    {
         Doublevalues1.add(Double.parseDouble(valueItemsToList.get(j)));
         //Doublevalues.add(Double.valueOf(valueItemsToList.get(j)));

    }
     Doublevalues1.forEach(System.out::println);

solved thanks for your posts 解决了您的帖子谢谢

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM