Select 个来自泛型列表的肯定
Select positives from a list with Generics
我是新来的,所以如果你不明白我的问题,请原谅。(友善 :D)
所以基本上我必须制作一个方法,该方法 select 使用泛型从列表中确定“数字”。
方法的基础应如下所示:
public static <T> List<T> selectPositives(List<? extends Number> list) {
T positiveNumber = null;
for (int i = 0; i < list.size(); i++) {
if (list.get(i) > 0) {
return (List<T>) positiveNumber;
}
}
return (List<T>) positiveNumber;
}
很明显这行不通,所以我将不胜感激任何帮助。
谢谢,
阿尔玛
检查数字的绝对值,然后将其与没有绝对值的数字进行比较。如果它们匹配,则为正,如果不匹配,则为负。
将匹配到另一个列表的元素添加到列表中的所有正数
我修改了您的代码,使其成为 return 正数列表。
//public static <T> List<T> selectPositives(List<? extends Number> list) {
public static <T extends Number> List<T> selectPositives(List<T> list) {
//T positiveNumber = null;
List<T> positiveNumbers = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
if (list.get(i).doubleValue() > 0) {
//return (List<T>) positiveNumber;
positiveNumbers.add(list.get(i));
}
}
return positiveNumbers;
}
public static void main(String[] args) {
List<Number> list = List.of(-1,-2,1.5, 3,-4,-5, 6);
System.out.println(selectPositives(list));
}
输出:
[1.5, 3, 6]
使用 Stream API,可以从输入中过滤掉正列表:
public static <T extends Number> List<T> selectPositives(List<T> list) {
return list.stream()
.filter(x -> x.doubleValue() > 0.0)
.collect(Collectors.toList());
}
此外,具有反转条件的 List::removeIf
可以应用于输入的给定 input/mutable 副本:
public static <T extends Number> List<T> selectPositives(List<T> list) {
List<T> result = new ArrayList<>(list);
result.removeIf(x -> x.doubleValue() <= 0);
return result;
}
我是新来的,所以如果你不明白我的问题,请原谅。(友善 :D) 所以基本上我必须制作一个方法,该方法 select 使用泛型从列表中确定“数字”。
方法的基础应如下所示:
public static <T> List<T> selectPositives(List<? extends Number> list) {
T positiveNumber = null;
for (int i = 0; i < list.size(); i++) {
if (list.get(i) > 0) {
return (List<T>) positiveNumber;
}
}
return (List<T>) positiveNumber;
}
很明显这行不通,所以我将不胜感激任何帮助。 谢谢, 阿尔玛
检查数字的绝对值,然后将其与没有绝对值的数字进行比较。如果它们匹配,则为正,如果不匹配,则为负。
将匹配到另一个列表的元素添加到列表中的所有正数
我修改了您的代码,使其成为 return 正数列表。
//public static <T> List<T> selectPositives(List<? extends Number> list) {
public static <T extends Number> List<T> selectPositives(List<T> list) {
//T positiveNumber = null;
List<T> positiveNumbers = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
if (list.get(i).doubleValue() > 0) {
//return (List<T>) positiveNumber;
positiveNumbers.add(list.get(i));
}
}
return positiveNumbers;
}
public static void main(String[] args) {
List<Number> list = List.of(-1,-2,1.5, 3,-4,-5, 6);
System.out.println(selectPositives(list));
}
输出:
[1.5, 3, 6]
使用 Stream API,可以从输入中过滤掉正列表:
public static <T extends Number> List<T> selectPositives(List<T> list) {
return list.stream()
.filter(x -> x.doubleValue() > 0.0)
.collect(Collectors.toList());
}
此外,具有反转条件的 List::removeIf
可以应用于输入的给定 input/mutable 副本:
public static <T extends Number> List<T> selectPositives(List<T> list) {
List<T> result = new ArrayList<>(list);
result.removeIf(x -> x.doubleValue() <= 0);
return result;
}