我正在尝试编写一个方法,该方法接受数值列表 - 例如List<Integer>、List<Float>等List<Double>- 并给出平均值。
public double getAverage(List<? extends Number> stats) {
double sum = 0.00;
if(!stats.isEmpty()) {
// sum = stats.stream()
// .reduce(0, (a, b) -> a + b);
// return sum / stats.size();
}
}
Run Code Online (Sandbox Code Playgroud)
这些是我得到的错误:
运算符“+”不能应用于“capture<?” 扩展 java.lang.Number>', 'capture<? 扩展 java.lang.Number>'
我一直在尝试了解Java Generics中的下界通配符的概念和基本原理。我可以理解只读的上限通配符背后的原因,以及在何处以及如何使用它。我仍然无法掌握下限通配符。我有一组遵循以下层次结构的类。(Automobile是基类。)
Automobile
- Bus
- Minibus
- Doubledecker
- Electricbus
- Car
- Sedan
- Hatchback
- Coupe
- Truck
- Minivan
- Pickuptruck
- Suv
- Fullsuv
- Midsuv
Run Code Online (Sandbox Code Playgroud)
现在,我试图建立一个(灵活的)列表,并向其中添加不同类型的对象。
import java.util.ArrayList;
import java.util.List;
public class Garage {
public static void main(String[] args)
{
List<? super Suv> list = null;
Suv s = new Suv();
Truck t = new Truck();
Automobile a = new Automobile();
list = new ArrayList<Suv>();
list.add(s); // declared as List<? super Suv> …Run Code Online (Sandbox Code Playgroud) 我有两个已排序的整数数组。我希望将它们合并到一个排序数组中。我想使用 Java Stream 来实现这一点。
我可以做一个嵌套流吗?
Arrays.asList(nums1).stream()
.forEach(i -> Arrays.asList(nums2).stream()
.forEach(j -> //compare i,j)
.collect as list// ;
Run Code Online (Sandbox Code Playgroud)
例如,[1,3,4]并且[2,5]应该返回[1,2,3,4,5]
我理解equals和hashCode方法之间的契约.如果equals被覆盖,hashCode也应该是.我可以覆盖hashCode方法以始终返回相同的值,比如int 23吗?我可以覆盖hashCode每次调用时返回随机数的方法吗?
java ×4
generics ×2
java-stream ×2
algorithm ×1
arrays ×1
collections ×1
hashcode ×1
sorting ×1
types ×1