Я чайник. Есть массив объектов, как выделить из массива объекты, которые имеют общий признак (поле)? (например, человек - объект имеющий поля "имя" и "рост", как выделить людей у которых совпадает рост чтобы, допустим, вывести их в консоль?)
P.S: Наверное, я ужасно изъясняюсь, извините :c
Если я правильно понял вопрос, то ниже - примерный код.
См. метод groupByHeight
и комментарии в нём.
class Human {
public String name = "";
public int height;
public String toString() {
return name;
}
public static void groupByHeight(Human[] humans) {
// Создаём мапу `grouped`, где ключом является рост.
Map<Integer, List<Human>> grouped = new HashMap<>();
// Каждый элемент массива помещаем в список, соответствующий его росту.
for (Human h: humans) {
grouped.putIfAbsent(h.height, new ArrayList<>());
grouped.get(h.height).add(h);
}
// Пробегаем по всем ключам мапы и выводим список объектов с соотв-м ростом.
for (int height: grouped.keySet()) {
System.out.println("Humans with height " + height ": " + grouped.get(height));
}
}
}
Метод выведет списки для всех вариантов роста.
Если интересует только конкретный рост - можно его просто запросить из построенной мапы: grouped.get(requestedHeight)
. Впрочем в этом случае можно и вовсе без мапы обойтись.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Скажите, имеется ли техническая возможность вставить изображение ImageIcon в документ Word с помощью Apache Poi?
Есть функция, она выводит рандомное число из массиваКак сделать проверку на выводило ли это число раньше?
Не могу понять, но у меня не работает ctrl + C, если я нажимаю эту комбинацию то ничего не копируется, пропадает выделение, а самое противное, что...
Не получается вывести "вчера", с "сегодня" и остальными датами проблем нет