#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