Многомерные массивы для хранения нескольких типов данных

#java #arrays

#java #массивы

Вопрос:

Я немного знаю php. а Java намного меньше.

Я создаю небольшое приложение для поиска текста в текстовой области и сохранения результата в массиве.

Массив в PHP будет выглядеть следующим образом.

 array(
    "searchedText" => "The text that is searched",
    "positionsFound" => array(12,25,26,......),
    "frequencies" => 23 //This is total words found divided by total words
);
  

Но java не поддерживает массив с несколькими типами данных. В приведенном выше массиве только второй элемент «positionFound» имеет переменную длину.

Позже мне нужно выполнить итерацию по этому массиву и создать файл, включающий все вышеупомянутые элементы.

Пожалуйста, направьте меня

Комментарии:

1. Могу ли я предложить вам потратить время на чтение руководства Sun Java, начиная со страницы «Новичок в Java» — oracle.com/technetwork/topics/newtojava/new2java-141543.html . В долгосрочной перспективе это избавит вас от многих проблем…

Ответ №1:

Java действительно поддерживает объекты. Вы должны определить класс, подобный

 class MyData {
    String searchedText;
    Set<Integer> positionsFound;
    int frequencies;
}

List<MyData> myDataList = new ArrayList<MyData>();
// OR
MyData[] myDataArray = new MyData[number];
  

И вы можете использовать эту структуру для хранения ваших данных. Существуют и другие полезные методы, такие как конструкторы и toString (), и я предлагаю вам использовать вашу IDE для их генерации.

При записи этих данных в файл вы можете счесть JSon естественным форматом для использования.


Я предлагаю вам взглянуть на GSon, который является хорошей библиотекой JSon.

Из документации GSon вот пример

 class BagOfPrimitives {
  private int value1 = 1;
  private String value2 = "abc";
  private transient int value3 = 3;
  BagOfPrimitives() {
    // no-args constructor
  }
}
  

(Сериализация)

 BagOfPrimitives obj = new BagOfPrimitives();
Gson gson = new Gson();
String json = gson.toJson(obj); 
  

==> json — это {«value1»:1, «value2»: «abc»}

Обратите внимание, что вы не можете сериализовать объекты с циклическими ссылками, поскольку это приведет к бесконечной рекурсии.

(Десериализация)

 BagOfPrimitives obj2 = gson.fromJson(json, BagOfPrimitives.class);  
  

==> obj2 похож на obj

Комментарии:

1. Вы должны добавить внешний массив, который был бы похож на MyData[] myData .

2. В каком пакете установлен? Выдает ошибку не удается найти символ

3. @mrN, java.util.Set моя IDE просто находит это для меня и добавляет импорт автоматически. 😉

4. @Peter, не могли бы вы рассказать мне, как сохранить значения двумя предложенными способами. Я схожу с ума, пытаясь это выяснить.

5. Какую IDE вы используете? Я использую netbeans