Я чайник. Есть массив объектов, как выделить из массива объекты, которые имеют общий признак (поле)? (например, человек - объект имеющий поля "имя" и "рост", как выделить людей у которых совпадает рост чтобы, допустим, вывести их в консоль?)
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)
. Впрочем в этом случае можно и вовсе без мапы обойтись.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Скажите, имеется ли техническая возможность вставить изображение ImageIcon в документ Word с помощью Apache Poi?
Есть функция, она выводит рандомное число из массиваКак сделать проверку на выводило ли это число раньше?
Не могу понять, но у меня не работает ctrl + C, если я нажимаю эту комбинацию то ничего не копируется, пропадает выделение, а самое противное, что...
Не получается вывести "вчера", с "сегодня" и остальными датами проблем нет