我在這里很新,所以如果你不理解我的問題,請原諒我。(好點:D)所以基本上我必須制作一種方法,使用泛型從串列中選擇正數“數字”。
該方法的基礎應如下所示:
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;
}
顯然這不起作用,所以我將不勝感激任何幫助。謝謝,阿爾瑪
uj5u.com熱心網友回復:
我修改了您的代碼,以便它回傳一個正數串列。
//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]
uj5u.com熱心網友回復:
使用 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可以將反轉條件應用于給定的輸入/輸入的可變副本:
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;
}
uj5u.com熱心網友回復:
public static List<? extends Number> selectPositives(List<? extends Number> list) {
final List<Number> result = new ArrayList<>();
for (final Number inputNumber : list) {
if (BigDecimal.valueOf(inputNumber.doubleValue())
.compareTo(BigDecimal.ZERO) >= 0) {
result.add(inputNumber);
}
}
return result;
}
uj5u.com熱心網友回復:
檢查數字的絕對值,然后將其與沒有 abs 的數字進行比較。如果它們匹配,則為正,如果不匹配則為負。
將匹配到另一個串列的元素添加到串列中的所有正數
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/397101.html
