#java #list #filter #numbers #range
#java #Список #Фильтр #числа #диапазон
Вопрос:
Вот мой код для получения учеников, которые получают оценки 70 и выше
public static List<List<String>> higher (List<List<String>> data, String high) {
return data.stream()
.filter(e-> e.get(6).equalsIgnoreCase(high))
.collect(Collectors.toList());
}
Это мой результат
[70]
Могу ли я узнать, как получить всех учащихся, которые получают 70 и выше
Комментарии:
1. Можете ли вы привести пример того, как структурирован список или как вы вызываете метод?
2. Вы сохраняете метки в виде строки? Лучше сохранить его как класс для ваших пользовательских данных и помечать как целое число, либо вам нужно разобрать строку до целого числа, а затем сравнить с вашим постоянным значением.
Ответ №1:
Протестируйте это:
public static List<List<String>> distinction(List<List<String>> data, Integer high) {
return data.stream()
.filter(e-> Integer.parseInt(e.get(6)) >= high)
.collect(Collectors.toList());
}
высокий должен быть 70
Комментарии:
1. @WJS Я использовал Integer.parseInt(), поэтому я использую Integer в параметре функции. Разница между int и Integer : geeksforgeeks.org/difference-between-an-integer-and-int-in-java
Ответ №2:
Поскольку у вас есть список списков, вам нужно выполнить flatmap поверх data
, чтобы свести список списков к одному списку.
int threshold = Integer.parseInt(high);
return data.stream()
.flatMap(d -> d.stream()) // converts list of lists to a stream of Strings of arbitrary length
.filter(e -> Integer.parseInt(e.get(2)) >= threshold)
.collect(Collectors.toList());
Здесь я предполагаю, что ваш список списков представляет собой набор из 3 списков элементов (из-за предоставленного вами вывода), где 3-й индексированный элемент ( e.get(2)
) — это оценка. Если вы преобразуете это значение в Integer
using Integer.parseInt
, вы сможете сравнить его для фильтрации.
Ответ №3:
Попробуйте сделать это так. Вам нужно преобразовать строку в int для сравнения. Также было бы лучше передать значение high как int.
public static List<List<String>> Distinction(List<List<String>> data, int high) {
return data.stream()
.filter(e-> Integer.parseInt(e.get(2)) >= high)
.collect(Collectors.toList());
}