Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
始终列出一个[JAVA]_Java_List_Arraylist_Text - Fatal编程技术网

始终列出一个[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); //

我正在尝试用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); // 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的类型以及它在哪个包中,这也会有所帮助。那么您已经弄清楚了吗?如果是,请告诉我们解决方案。