Это можно сделать в несколько этапов. Пусть для простоты все значения равны String
. Также предполагается, что у вас есть конструкторы и методы equals
/ hashcode
.
Map<IdName, Map<Another, List<String[]>>> map = Arrays.stream(dbResult)
.collect(
groupingBy(s -> new IdName(s[0], s[1], null),
groupingBy(s -> new Another(s[2], s[3], null))));
Тогда мы можем создать Format
объектов и собрать все вместе.
for (Map.Entry<IdName, Map<Another, List<String[]>>> entry : map.entrySet()) {
IdName idName = entry.getKey(); // main object
Set<Another> anothers = entry.getValue().keySet();
for (Another another : anothers) { // create list<Format> for each Another
List<Format> formatList = entry.getValue().get(another).stream()
.map(format -> new Format(format[4], format[5], format[6]))
.collect(Collectors.toList());
another.setFormatList(formatList);
}
idName.setAnotherNameList(anothers);
}
Теперь мы можем получить все собранные объекты
Set<IdName> idNames = map.keySet();
Мой последний выбор - JamVM + GNU Classpath. Работает отлично! :)
4 различных VMs были портированы к Symbian ОС, которая работает на CPU ARM.
KVM Sun, горячая точка Sun (или cldc-привет) VM, CDC Sun VM и IBM J9 VM.
я подозреваю, что существуют еще несколько.
хорошее место для запуска исследования было бы списком лицензиатов JavaME:
Я проделал некоторую работу в прошлом, так что я думаю, что знаю, что вы ищете .. .? (может быть, в любом случае :)
Если вы посмотрите на такие проекты, как Buildroot , вы обнаружите, что jamvm теперь включен, я планирую попробовать его на Atmel NGW100 (основан на AVR32, но похож на ARM9). Но есть много других проектов ARM9, которые делают почти то же самое.
Эта идея такая же, как и с Android, сначала вы позволяете Linux позаботиться о нижних уровнях, а затем вы добавляете java vm сверху и запускаете ваши приложения.
Обратной стороной является то, что Dallas tini была более или менее «готовой» платформой, вам не пришлось делать много волшебства, чтобы заставить ее работать. Но этот путь, к сожалению, потребует некоторой работы, чтобы выйти на полную скорость. Но с хорошей стороны вам обещают 32-битный ЦП с частотой 200 МГц, 32 Мб ОЗУ и памятью на SD-карте, на которой можно легко сохранить пару гигабайт :)
Удачи.
Также имеется Java SE Embedded , который поддерживает ARMv5, v6, v7, но имейте в виду, что это полноценная точка доступа с компилятором C1.