始终列出一个[JAVA]
我正在尝试用JAVA读取文本文件,检索一些值并执行查询。列表中应该有两个数据,但只显示一个始终列出一个[JAVA],java,list,arraylist,text,Java,List,Arraylist,Text,我正在尝试用JAVA读取文本文件,检索一些值并执行查询。列表中应该有两个数据,但只显示一个 BufferedReader br = new BufferedReader(new FileReader(file)); String st; List<Object[]> list = null; try { while ((st = br.readLine()) != null) { String id = st.substring(92, 100); //
BufferedReader br = new BufferedReader(new FileReader(file));
String st;
List<Object[]> list = null;
try {
while ((st = br.readLine()) != null) {
String id = st.substring(92, 100); // get from text file
System.out.println(id);
list = commDAO.getDetails(id); // query
System.out.println("Total list " + list.size());
}
br.close();
} catch (Exception e) {
e.printStackTrace();
}
logger.printInfo(AAA.class, "**** retrieve list: " + list.size());
getDeails
public List getDetails(String id) {
.......
return em.createQuery(bf.toString())
.......
.getResultList();
}
public List<Object[]> getDetails(String id) {
.......
return em.createQuery(bf.toString())
.......
.getResultList();
}
我创建另一个列表并将列表添加到TotalList
List TotalList = new ArrayList();
list = TotalList.add(id);
但是get不兼容类型:布尔值不能转换为List
这一行做什么?对象是什么
list = commDAO.getDetails(id);
看起来您正在用一个全新的列表覆盖列表对象,而不是将对象添加到现有列表中
请尝试以下操作:
list.add(commDAO.getDetails(id));
list.add(commDAO.getDetails(id).get(0));
或者如果commDAO.getDetails(id)
返回一个列表,则如下所示:
list.add(commDAO.getDetails(id));
list.add(commDAO.getDetails(id).get(0));
这条线是干什么的?对象是什么
list = commDAO.getDetails(id);
看起来您正在用一个全新的列表覆盖列表对象,而不是将对象添加到现有列表中
请尝试以下操作:
list.add(commDAO.getDetails(id));
list.add(commDAO.getDetails(id).get(0));
或者如果commDAO.getDetails(id)
返回一个列表,则如下所示:
list.add(commDAO.getDetails(id));
list.add(commDAO.getDetails(id).get(0));
如果我没弄错的话,问题是您总是给列表分配新值,而不是向列表中添加新值。
你有:
list = commDAO.getDetails(id);
你应该:
list.add(commDAO.getDetails(id));
如果我没弄错的话,问题是您总是给列表分配新值,而不是向列表中添加新值。
你有:
list = commDAO.getDetails(id);
你应该:
list.add(commDAO.getDetails(id));
这是我的解决方案
List<Object[]> list = new ArrayList<>();
try {
while ((st = br.readLine()) != null) {
String id = st.substring(92, 100); // get from text file
System.out.println(id);
list.addAll(commDAO.getDetails(id)); // query
}
System.out.println("Total list " + list.size());
} catch (Exception ex) {
}
List List=new ArrayList();
试一试{
而((st=br.readLine())!=null){
String id=st.substring(92100);//从文本文件获取
系统输出打印项次(id);
list.addAll(commDAO.getDetails(id));//查询
}
System.out.println(“Total list”+list.size());
}捕获(例外情况除外){
}
获取详细信息
public List getDetails(String id) {
.......
return em.createQuery(bf.toString())
.......
.getResultList();
}
public List<Object[]> getDetails(String id) {
.......
return em.createQuery(bf.toString())
.......
.getResultList();
}
公共列表获取详细信息(字符串id){
.......
返回em.createQuery(bf.toString())
.......
.getResultList();
}
这是我的解决方案
List<Object[]> list = new ArrayList<>();
try {
while ((st = br.readLine()) != null) {
String id = st.substring(92, 100); // get from text file
System.out.println(id);
list.addAll(commDAO.getDetails(id)); // query
}
System.out.println("Total list " + list.size());
} catch (Exception ex) {
}
List List=new ArrayList();
试一试{
而((st=br.readLine())!=null){
String id=st.substring(92100);//从文本文件获取
系统输出打印项次(id);
list.addAll(commDAO.getDetails(id));//查询
}
System.out.println(“Total list”+list.size());
}捕获(例外情况除外){
}
获取详细信息
public List getDetails(String id) {
.......
return em.createQuery(bf.toString())
.......
.getResultList();
}
public List<Object[]> getDetails(String id) {
.......
return em.createQuery(bf.toString())
.......
.getResultList();
}
公共列表获取详细信息(字符串id){
.......
返回em.createQuery(bf.toString())
.......
.getResultList();
}
您正在为while循环中的列表
变量赋值。每次迭代都将覆盖上一次。您需要在getDetails()
方法中进行更改。使用此方法,您可能不会向列表中添加元素,而是每次都创建新列表。如果可以显示getDetails()
方法的定义会更好。getDetails()
是否总是返回包含单个元素的列表?Ok@JohnJoe。如果getDetails()
总是返回一个包含单个元素的列表,那么您应该从getDetails()
方法返回一个对象,而不是一个列表。@Varun但我使用的是列表列表,您在while循环中分配给list
变量。每次迭代都将覆盖上一次。您需要在getDetails()
方法中进行更改。使用此方法,您可能不会向列表中添加元素,而是每次都创建新列表。如果可以显示getDetails()
方法的定义会更好。getDetails()
是否总是返回包含单个元素的列表?Ok@JohnJoe。如果getDetails()
总是返回一个包含单个元素的列表,那么您应该从getDetails()
方法返回一个对象,而不是一个列表。@Varun但我使用的是列表列表所以commDAO.getDetails(id)
返回的是哪种类型?基于此,您需要选择您的解决方案。返回类型是什么?如果您能说明commDAO的类型以及它在哪个包中,这也会有所帮助。那么您已经弄清楚了吗?如果是,请告诉我们解决方案。commDAO.getDetails(id)
返回哪种类型?基于此,您需要选择您的解决方案。返回类型是什么?如果您能说明commDAO的类型以及它在哪个包中,这也会有所帮助。那么您已经弄清楚了吗?如果是,请告诉我们解决方案。