JAVA 8要从列表分配给对象的内存/集合/列表值

JAVA 8要从列表分配给对象的内存/集合/列表值,java,list,dictionary,Java,List,Dictionary,我对Java编程非常陌生,因此这是一个查询。 我有一个类,它用String、LocalDate、Boolean和Double定义对象。 在我的主要部分中,我从一个输入文件中读取数据。使用文件、行、路径。 我正在列表中存储它 如何将每个值指定给对象定义中的每个字段? 尝试了以下操作,但出现错误,未将其定义为字符串类型 package com.bapu; import java.io.IOException; import java.nio.file.Files; i

我对Java编程非常陌生,因此这是一个查询。 我有一个类,它用String、LocalDate、Boolean和Double定义对象。 在我的主要部分中,我从一个输入文件中读取数据。使用文件、行、路径。 我正在列表中存储它

如何将每个值指定给对象定义中的每个字段? 尝试了以下操作,但出现错误,未将其定义为字符串类型

    package com.bapu;
    import java.io.IOException;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    import java.time.LocalDate;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.stream.*;

    public class App {
        public static void main(String[] args) throws IOException{
            String inputFileName = "e:/input/instruct.csv";     
            List<String> list = new ArrayList<>();
            try {
                list = Files.lines(Paths.get(inputFileName))
                .map(s -> s.trim())
                .skip(1)
                .collect(Collectors.toList());          
             } catch (IOException e) {
            e.printStackTrace(); 
         }
         // list.forEach(System.out::println);      

            List<Instruction1> instruct1 = list.stream()
                    .map(p -> { 
                        Instruction1 instruct2 = new ClientInstructions(                        
                        instruct1.setClientName(p.getClientName()),
                        instruct1.setFlag(p.getFlag()), // etc etc......
                        //return instruct1; 
                        );  })                  
                     .collect(Collectors.toList());
        } // main()
    } //class()

In another java file , I have the class object defined.
    package com.bapu;   
    import java.time.LocalDate;
    public class Instruction1 {

    private String clientName;
    private Boolean flag ;
    //  etc etc variables
    public Instruction1(String clName1, Boolean flag1.... ) {
        super();
        this.clientName= clName1;
        this.flag = flag1;
    } // argument Constructor

    public String getClientName() {
        return clientName;
    }

    public void setClientName(String clientName) {
        this.clientName = clientName;
       }   
        /// all getters setters. followed hereafter
     }

    }  // class Instruction1
package com.bapu;
导入java.io.IOException;
导入java.nio.file.Files;
导入java.nio.file.path;
导入java.time.LocalDate;
导入java.util.ArrayList;
导入java.util.List;
导入java.util.stream.*;
公共类应用程序{
公共静态void main(字符串[]args)引发IOException{
String inputFileName=“e:/input/Instruction.csv”;
列表=新的ArrayList();
试一试{
list=Files.lines(path.get(inputFileName))
.map(s->s.trim())
.skip(1)
.collect(Collectors.toList());
}捕获(IOE异常){
e、 printStackTrace();
}
//list.forEach(System.out::println);
List instruct1=List.stream()
.map(p->{
指令1指令2=新客户端指令(
说明1.setClientName(p.getClientName()),
instruct1.setFlag(p.getFlag()),//等等。。。。。。
//返回指令1;
);  })                  
.collect(Collectors.toList());
}//main()
}//类()
在另一个java文件中,我定义了类对象。
包com.bapu;
导入java.time.LocalDate;
公共课堂教学1{
私有字符串clientName;
私有布尔标志;
//etc变量
公共指令1(字符串clName1,布尔标志1…){
超级();
this.clientName=clName1;
this.flag=flag1;
}//参数构造函数
公共字符串getClientName(){
返回clientName;
}
public void setClientName(字符串clientName){
this.clientName=clientName;
}   
///所有的接球手都是二传手,以后再接
}
}//课堂教学1
不理解这里的信息流逻辑。 请求指导。 非常感谢。

希望这对您有所帮助

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;
import java.util.function.BiFunction;
import java.util.stream.Collectors;

class Instruction {
    private String clientName;
    private Boolean flag;

    public Instruction(String clientName, Boolean flag) {
        super();
        this.clientName = clientName;
        this.flag = flag;
    }

    @Override
    public String toString() {

        return String.format("ClientName : %s, Flag : %s", this.clientName,
                this.flag);
    }
}

public class App {

    static BiFunction<String, Boolean, Instruction> createInstrucationFn = (
            client, flag) -> new Instruction(client, flag);

    public static void main(String[] args) throws IOException {

        String inputFileName = "e:/input/instruct.csv";

        List<String> dataLine = Files.readAllLines(Paths.get(inputFileName));

        List<Instruction> instructionList = dataLine
                .stream()
                .map(line -> {
                    String[] pairs = line.split(",");
                    return createInstrucationFn.apply(pairs[0], Boolean.valueOf(pairs[1]));
                }).collect(Collectors.toList());

        instructionList.forEach(System.out::println);

    }
}
输出:

ClientName : Client-A, Flag : true
ClientName : Client-B, Flag : true

如果您是Java新手,我建议您首先坚持基础知识,现在跳过流式api。除此之外,请提供一个例子,您发布的代码几乎没有告诉我们。Thomas是对的,您应该开始理解对象以及整体语言结构和语法。这里我们看到sa示例:
List instruct1
正在声明字符串列表<代码>说明1。setClientName(…)正在尝试设置该列表的客户端名称(
list
没有该属性)。可能需要:
instr2=新客户端指令();instr2.setClientName(…)
Yes。我擅长OOPS。我学习过核心Java、Java8和Sprint。所以概念是已知的。使用是我用简单的例子尝试的东西,现在我坚持这一点。我现在将发布代码片段。非常感谢。了解双功能。我现在正试图通过我的课堂指令传递更多的参数。(带日期、浮动[]等)。看起来双功能不能使用它们。在我进一步检查这一点的同时,欢迎您提供任何进一步的提示。@PriyamwadaveeraVasantgadkar尝试创建您自己的功能接口,以满足您的需求。既然你是新来的,我建议你选一些书来学习。这是一本关于Java8流和多线程概念的好书,OCP Oracle(r)认证的专业Java程序员2-Jeanne Boyarsky
ClientName : Client-A, Flag : true
ClientName : Client-B, Flag : true