java去除最大值最小值
时间: 2024-11-09 11:09:56 浏览: 15
在Java中,要去除数组或集合中的最大值或最小值,你可以使用以下几种方法:
1. **Arrays类** (针对数组)
- 对于数组,可以先找出数组的最大值和最小值,然后通过遍历再次剔除它们。例如,如果你有一个整数数组`int[] array`:
```java
int max = Arrays.stream(array).max().getAsInt();
int min = Arrays.stream(array).min().getAsInt();
array = Stream.of(array).filter(i -> i != max && i != min).toArray(); // 使用流API过滤掉最大值和最小值
```
2. **Collections类** (针对List)
- 对于List,同样可以用类似的方式操作,先找到最小值和最大值,再创建一个新的List,排除这两个值:
```java
List<Integer> list = ...; // 初始化你的列表
Optional<Integer> maxOptional = list.stream().reduce(Integer::max);
Optional<Integer> minOptional = list.stream().reduce(Integer::min);
if (maxOptional.isPresent() && minOptional.isPresent()) {
list = list.stream()
.filter(i -> !i.equals(maxOptional.get()) && !i.equals(minOptional.get()))
.collect(Collectors.toList());
}
```
3. **自定义排序和迭代器** (通用方法)
- 另一种方法是先对数据进行排序,然后取中间值作为新的范围,但这仅适用于数值型数据。比如对于升序排序后的数组,中间两个元素即非最大非最小值:
```java
Collections.sort(array);
array = Arrays.copyOfRange(array, 1, array.length); // 或者list.subList(1, list.size());
```
阅读全文