JAVA 8要从列表分配给对象的内存/集合/列表值
我对Java编程非常陌生,因此这是一个查询。 我有一个类,它用String、LocalDate、Boolean和Double定义对象。 在我的主要部分中,我从一个输入文件中读取数据。使用文件、行、路径。 我正在列表中存储它 如何将每个值指定给对象定义中的每个字段? 尝试了以下操作,但出现错误,未将其定义为字符串类型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
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