Java 使用lambdas将字符串arraylist转换为双arraylist

Java 使用lambdas将字符串arraylist转换为双arraylist,java,string,arraylist,lambda,double,Java,String,Arraylist,Lambda,Double,我需要一些关于使用JavaLambdas将字符串数组列表转换为双数组列表的帮助,直到现在我已经尝试了这些 List<Double> Doublevalues1 = valueItemsToList.stream().mapToDouble(Double::parseDouble).boxed().collect(Collectors.toList()); List Doublevalues1=valueItemsToList.stream().mapToDouble(Double:

我需要一些关于使用JavaLambdas将字符串数组列表转换为双数组列表的帮助,直到现在我已经尝试了这些

List<Double> Doublevalues1 = valueItemsToList.stream().mapToDouble(Double::parseDouble).boxed().collect(Collectors.toList());
List 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)));
    }
for(int j=0;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);
}
}
公共类股票{
公共静态void main(字符串[]args){
//此处的TODO代码应用程序逻辑
字符串buff[]=新字符串[4988];
int i=0;
File File=新文件(“C:\\Users\\admin\\Desktop\\data.csv”);
试一试{
FileInputStream fis=新的FileInputStream(文件);
BufferedReader dis=新的BufferedReader(新的InputStreamReader(fis));
字符串s;
而((s=dis.readLine())!=null){
//系统输出打印项次;
buff[i]=s;
i++;
//字符串[]s1=s.split(“,”);
}
}
捕获(例外e)
{
System.out.println(“在fileinput的块尝试时出错”);
}
//将数组字符串转换为arraylist
列表值ItemsToList=Arrays.asList(buff);
//valueItemsToList.forEach(System.out::println);
List Doublevalues1=new ArrayList();//valueItemsToList.stream().mapToDouble(Double::parseDouble.boxed().collect(Collectors.toList());
对于(int j=0;j
错误: 它有点笨拙,它在这里是完整的

线程“main”java.lang.NullPointerException中出现异常 在sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1838)中 at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110) 位于java.lang.Double.parseDouble(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
代替
buff[]

(因为如果输入文件中的行数少于4988,则会得到NullPointerExcetion,如果行数更多,则会得到ArrayIndexOutOfBoundsException)

或者在字符串到双精度转换之前进行
null
检查,例如

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)));
    }
}
for(int j=0;j
列表值itemstolist=Arrays.asList(buff);
//valueItemsToList.forEach(System.out::println);
List Doublevalues1=new ArrayList();//valueItemsToList.stream().mapToDouble(Double::parseDouble).boxed().collect(Collectors.toList());
对于(int j=0;j

谢谢你的帖子

“有人能告诉我哪里出了问题吗”-你还没告诉我发生了什么,这让你很难得到帮助。请发布一个。当我使用integer而不是double时,它运行得很好。唯一的问题是它与double不兼容,并且文件只包含一列数据。
buff
包含空值,除非行数正好合适。不要使用数组,只需使用
ArrayList
存储
s
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);