Java получить массив в списке - PullRequest
0 голосов
/ 03 июня 2019

Я публикую то, что я считаю соответствующим кодом.В классе таблицы у меня есть:

class Table extends AbstractTableModel {
   private List<String> columnHeaders;
   private List<Object> tableData;
   public Table(SortedSet<String> oznake, List<Object> aRows) {
      columnHeaders= new ArrayList<String>(oznake);
      tableData= new ArrayList<Object>(aRows);
      System.out.println("       tableData:" + tableData.size() + " "+ tableData);
   }

   public int getColumnCount() {
      return columnHeaders.size();
   }
   public int getRowCount() {
      return tableData.size();
   }

   public Object getValueAt(int row, int column) {
      List rowData = (List)(tableData.get(row));
      return (String)rowData.get(column);
   }

   public String getColumnName(int column) {
      return (String)(columnHeaders.get(column));
   }
}

В XmlRead у меня есть:

public class XmlRead {
   public List<Object> getTable() {
      Map<String, String> rowMap = new LinkedHashMap<>();
      List<Object> aRows = new ArrayList<>();
                  rowMap.put(sOznaka, parser.getText());
                  aRows.add(Arrays.toString(rowMap.values().toArray(new String[rowMap.size()])));
      return (List<Object>)aRows;
   }
}

Я получаю из класса таблицы:

tableData:3 [[2007-01-01, 27.485, 156.93, 0, 1.3170], [2019-05-06, 25.715, 0, 124.13, 1.1199], [2019-05-09, 25.718, 122.91, 0, 1.1193]]

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: class java.lang.String cannot be cast to class java.util.List (java.lang.String and java.util.List are in module java.base of loader 'bootstrap')

    at irose.IroseTable.getValueAt(IroseTable.java:71)

Это выглядит как проблемастрока:

List rowData = (List)(tableData.get(row));

Я не могу понять, почему.Кажется, я должен получить объекты из списка, которые имеют 3 массива.

[[2007-01-01, 27.485, 156.93, 0, 1.3170], [2019-05-06, 25.715, 0, 124.13, 1.1199], [2019-05-09, 25.718, 122.91, 0, 1.1193]]

Как я могу получить Объект из этого массива, то есть, если я хочу просто:

2007-01-01

Как я могу это сделать?

1 Ответ

1 голос
/ 03 июня 2019

ClassCastException означает, что объект, который вы извлекаете из tableData.get(row), имеет тип String и не может быть преобразован в объект List.У вас есть 2 варианта решения вашей проблемы:

- вы можете сохранить строку в tableData.get(row) и использовать это регулярное выражение для получения даты ([12]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01]))

- или вы можете изменить объектсодержится внутри tableData, путем изменения строки: aRows.add(Arrays.toString(rowMap.values().toArray(new String[rowMap.size()]))); на

aRows.addAll(rowMap.values().toArray(new String[rowMap.size()]));

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...