[英]conversion of string arraylist to double arraylist using lambdas
我需要一些有關使用java lambdas將字符串數組列表轉換為雙數組列表的幫助,直到現在為止我都嘗試過這些。
List<Double> Doublevalues1 = 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)));
}
誰能告訴我我哪里出問題了。這不是重復的答案,我嘗試了所有通過網絡的可能性,但沒有一個能給我正確的答案,如果您能幫助您,我會很高興。 這是我完整的代碼
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);
}
}
錯誤:有點笨拙,這里完成
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秒)
同意@ bayou.io,可以使用ArrayList<String>
代替buff[]
(因為如果輸入文件中的行數少於4988,則將得到NullPointerExcetion,如果行數更多,則將得到ArrayIndexOutOfBoundsException)
或將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);
解決了您的帖子謝謝
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.