Есть у меня массив, примерно такой структуры:
array = [
'charcaters' => [
'characterName1' => [
'blockingStance' => [
['name' => '1.jpg', 'url' => 'http://site.com/sprites/block/1.jpg'],
['name' => '2.jpg', 'url' => 'http://site.com/sprites/block/2.jpg'],
['name' => '2.jpg', 'url' => 'http://site.com/sprites/block/3.jpg']
],
'walkingStance' => [
['name' => '1.jpg', 'url' => 'http://site.com/sprites/walk/1.jpg'],
['name' => '2.jpg', 'url' => 'http://site.com/sprites/walk/2.jpg'],
['name' => '2.jpg', 'url' => 'http://site.com/sprites/walk/3.jpg']
],
'specialMoves' => [
['name' => '1.jpg', 'url' => 'http://site.com/sprites/special/1.jpg'],
['name' => '2.jpg', 'url' => 'http://site.com/sprites/special/2.jpg']
],
...
],
'characterName2' => [
.....
],
...
],
'stages' => [
'stageName1' => [
'bridge' => [
['name' => '1.jpg', 'url' => 'http://site.com/sprites/bridge/1.jpg'],
['name' => '2.jpg', 'url' => 'http://site.com/sprites/bridge/2.jpg'],
['name' => '2.jpg', 'url' => 'http://site.com/sprites/bridge/3.jpg']
],
'street' => [
['name' => '1.jpg', 'url' => 'http://site.com/sprites/street/1.jpg'],
['name' => '2.jpg', 'url' => 'http://site.com/sprites/street/2.jpg'],
['name' => '2.jpg', 'url' => 'http://site.com/sprites/street/3.jpg']
],
'forest' => [
['name' => '1.jpg', 'url' => 'http://site.com/sprites/forest/1.jpg'],
['name' => '2.jpg', 'url' => 'http://site.com/sprites/forest/2.jpg']
],
...
],
'characterName2' => [
.....
],
...
],
'other' => ...
......
];
Многие любители обкакать PHP. Однако там создать такой массив и работать с ним проще простого. И мне кажется это очень удобным.
В Java, исходя из этих данных, у меня итоговый объект является вот таким вот монстром:
Map<String, Map<String, Map<String, ArrayList<TreeMap<String, String>>>>>
где
TreeMap<String, String> - это конечные ключ-значение
ArrayList<TreeMap<String, String>> - список этих самых ключей и значений
Map<String, ArrayList<TreeMap<String, String>>> - ключ: название состояния объекта, значение - список выше.
Map<String, Map<String, ArrayList<TreeMap<String, String>>>> - ключ: название объекта, значение - список состояний
Map<String, Map<String, Map<String, ArrayList<TreeMap<String, String>>>>> - конечный список.
Ужас.
В общем. Может я что-то не так понимаю и делаю, но...
Нет ли в Java средств быстро построить ассоциативный массив и желательно неограниченной вложенности? Возможно ли данную конструкцию с помощью тех средств как-то упростить, чтоб не было такого монстра? Или это is the only way?
Выглядит как попытка натянуть ассоциативный массив там, где он не нужен, так как на самом деле есть четкая структура. А Java любит ООП и классы. По сути у вас есть какие-то коллекции, описывающие последовательности изображений; есть некие персонажи, у которых есть, судя по всему анимации; есть сцены, состоящие из объектов. Это можно представить так:
class ImageInfo {
String name;
URI url;
}
class Character {
String name;
List<ImageInfo> blockingStanceImages;
List<ImageInfo> walkingStanceImages;
List<ImageInfo> specialMovesImages;
}
class StageObject {
String name;
List<ImageInfo> images;
}
class Stage {
String name
Map<String, StageObject> objects;
}
class Context {
Map<String, Character> characters;
Map<String, Stage> stages;
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Приложения, скомпилированные на более старой версии jdk, будут ли гарантированно работать на машине с более новой версией jdk, или нет? И наоборот,...
Нужно было решить задачу кодирования и декодированияНаписала на С++ так как владею этим языком, а нужно было на Java (не знаю данного языка)
На сервере софт мониторит и время от времени шлёт запросы к апиОколо суток софт работает просто идеально, а затем выдаёт эксепшн: