List.removeIf 出错 - 数组中的第 K 个最大元素

Posted

技术标签:

【中文标题】List.removeIf 出错 - 数组中的第 K 个最大元素【英文标题】:Error with List.removeIf - Kth Largest Element in an Array 【发布时间】:2022-01-24 05:04:01 【问题描述】:

我正在尝试查找数组中第 K 个最大的元素。

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

class Solution 
    public int findKthLargest(int[] nums, int k) 
        //List<Integer> list = Arrays.asList(nums); 
        List<Integer> list = IntStream.of(nums).boxed().collect(Collectors.toList());
        int max = nums[0];

        for(int x = 1; x<=k; x++)
            for(int y = 1; y<list.size(); y++)
                int temp;
                if (nums[y] > max) 
                    max = nums[y];
                    temp = max;
                
            
        list.removeIf(value -> value.equals(temp.valueOf()));
        
    return max;
    

我遇到了错误:

第 20 行:错误:找不到符号 list.removeIf(value -> value.equals(temp.valueOf())); ^ 符号:可变温度 位置:类解决方案

如果我在两个 for 循环语句之间移动 int temp,我会收到此错误。

第 21 行:错误:无法取消引用 int list.removeIf(value -> value.equals(temp.valueOf())); ^

【问题讨论】:

List.removeIf 自 Java 8 起可用。您使用的是什么 Java 版本? 【参考方案1】:

如果任务只是找到第 K 个最大元素,则不应从列表/数组中删除任何内容。

只需对数组进行排序并返回从末尾开始计数的第 k 个值:

public static int findKthLargest(int[] nums, int k) 
    assert(k > 0 && k < nums.length); // make sure k is valid
    Arrays.sort(nums);
    return nums[nums.length - k];

【讨论】:

以上是关于List.removeIf 出错 - 数组中的第 K 个最大元素的主要内容,如果未能解决你的问题,请参考以下文章

c中使用%s格式输出时的坑

Java8 List集合移除满足条件的元素

保存数据时出错,数据无效

我的第一个弹簧代码出错

使 UITextField 子视图成为 UITableView 中的第一响应者时出错

访问二维数组中的元素时出错