помочь с циклическим просмотром ArrayList, чтобы получить только конкретные результаты - PullRequest
0 голосов
/ 15 июня 2011

У меня есть SQL-запрос, который возвращает несколько результатов (к сожалению, количество результатов будет различным). В настоящее время я сохраняю результаты в arrayList следующим образом:

ArrayList allTerms = new ArrayList();


try {

  String selStmt = "SELECT .... ";

  stmt = conn.prepareStatement(selStmt);
  result = stmt.executeQuery();
  Object result_data;

  while (result.next()) {    
      term = (((result_data = result.getObject("internal_code"))==null || result.wasNull())?" ":result_data.toString());
      allTerms.add(term);
      desc = (((result_data = result.getObject("external_representation"))==null || result.wasNull())?" ":result_data.toString());
      allTerms.add(desc);
      sorter = (((result_data = result.getObject("sorter"))==null || result.wasNull())?" ":result_data.toString());
      allTerms.add(sorter);
      sDate = (((result_data = result.getObject("sDate"))==null || result.wasNull())?" ":result_data.toString());
      allTerms.add(sDate);
  }
  System.out.println(allTerms);

Хорошо, поэтому, когда я запускаю это, система печатает:

[2011SP, Spring 2011, 1, 11-15-2010, 2011SU, Summer 2011, 1, 01-15-2011, 2011FL, Fall 2011, 1, 04-01-2011, 2010Q2, CE Qtr 2 2010 Dec - Feb, 2, 08-01-2010, 2011Q3, CE Qtr 3 2011 Mar - May, 2, 11-01-2010, 2011Q4, CE Qtr 4 2011 Jun - Aug, 2, 02-01-2011, 2011Q1, CE Qtr 1 2011 Sep-Nov, 2, 05-01-2011]

Я не знаю, является ли это правильным способом или нет, но пока он работает, поэтому сейчас я хочу использовать мой массив массивов allTerms для передачи этих результатов в части HTML-страницы. так например:

<table class="t1">
  <tr>
    <td><!--Here I would want to show all rows from the allTerms arrayList with a "sorter" of 1--></td>
  </tr>
</table>
<table class="t2">
  <tr>
    <td><!--Here I would want to show all rows from the allTerms arrayList with a "sorter" of 1 and a term of ....SU (where '....' is the year) --></td>
  </tr>
</table>

1 Ответ

0 голосов
/ 15 июня 2011

Намного проще, если вы просто определите класс держателя коротких значений, например:

public class Row {  // give it a better name ;)
  public String internalCode;
  public String externalRepresentation;
  public String sorter;
  public String sDate;
}

Затем определите коллекцию, которая содержит эти значения строки:

List<Row> rows = new ArrayList<Row>();

и добавьте строки в список:

while (result.next()) {    
      Row row = new Row();
      row.internalCode = (((result_data = result.getObject("internal_code"))==null || result.wasNull())?" ":result_data.toString());
      row.externalRepresentation = (((result_data = result.getObject("external_representation"))==null || result.wasNull())?" ":result_data.toString());
      row.sorter = (((result_data = result.getObject("sorter"))==null || result.wasNull())?" ":result_data.toString());
      row.sDate = (((result_data = result.getObject("sDate"))==null || result.wasNull())?" ":result_data.toString());      
}

Теперь вы можете фильтровать в коллекции следующим образом:

 for (Row row:rows) {
   if (!row.sorter.equals("1"))
     continue;

   // do what has to be done with records where sorter = "1"
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...