【发布时间】:2022-01-02 20:07:56
【问题描述】:
我必须编写一个从列表中选择最大值的方法,并且必须使用泛型。显然,列表也可以是数字和字符串。 (返回值必须是 Opt 对象。这是任务。)
这是我目前所拥有的,但它不起作用,我会感谢您的建议:
public static <T> Opt<T> max(List<? extends Object> list) {
T max = (T) list;
for (int i = 0; i < list.size(); i++) {
if (list.get(i) > max) {
max = (T) list.get(i);
}
}
return (Opt<T>) max;
}
这是主要的样子:(从这个我必须使我的方法起作用。)
public static void main(String[] args) {
List<String> stringList = new ArrayList<>();
Utility.addTo(stringList, "aghi");
Utility.addTo(stringList, "fed");
Utility.addTo(stringList, "ghh");
Utility.addTo(stringList, "abc");
Utility.addTo(stringList, "123");
System.out.println("The maximum value: " + Utility.max(stringList).get());
List<Integer> intList = new ArrayList<>();
Utility.addTo(intList, 123);
Utility.addTo(intList, 456);
Utility.addTo(intList, -199);
Utility.addTo(intList, -90);
Utility.addTo(intList, 0);
Utility.addTo(intList, -10);
Utility.addTo(intList, 200);
System.out.println("The maximum value: " + Utility.max(intList).get());
List<Double> doubleList = new ArrayList<>();
Utility.addTo(doubleList, 123.0);
Utility.addTo(doubleList, 456.001);
Utility.addTo(doubleList, -199.0);
Utility.addTo(doubleList, -90.90);
Utility.addTo(doubleList, 0.0);
Utility.addTo(doubleList, -10.20);
Utility.addTo(doubleList, 200.1);
System.out.println("The maximum value: " + Utility.max(doubleList).get());
}
输出应该是:
The maximum value: ghh
The maximum value: 456
The maximum value: 456.001
【问题讨论】:
-
您遇到了哪些不明白的错误?
-
请更具体地提出问题。哪个部分不工作?
-
1.
Opt是您必须创建的类型还是Optional的拼写错误版本? 2. 不能声明参数List<? extends Object> list(任意事物的列表)并承诺返回Opt<T>(特定类型的可选值)。您应该使用参数List<T> list来声明列表元素的类型必须与返回类型相对应。然后,您不需要那些(T)类型转换。此外,您不能仅通过转换T值来创建Opt<T>。
标签: java list generics max optional