gpt4 book ai didi

java - 如何找到 ArrayList 中最大值的索引?

转载 作者:行者123 更新时间:2023-12-02 01:29:40 31 4
gpt4 key购买 nike

我正在编写一个程序来计算每个唯一单词在文本文件中出现的次数,然后返回出现次数最多的单词及其出现次数。因为我不知道会有多少个不同的单词,所以我无法使用数组,因为我无法预测它需要有多大。因此我使用了两个并行的ArrayList。 myWords 是一个字符串列表,myFreqs 是一个整数列表,这样 myFreqs 中的每个索引都包含存储在 myWords 的同一索引中的单词出现的次数。

为此,我尝试编写一个 for 循环来标识 myFreqs 中包含最高值的索引。我正在努力编写这个循环,因为 ArrayList 没有 .length() 方法,所以我不确定在循环中编写停止条件的最佳方法。我尝试使用

将 ArrayList 转换为数组
        myFreqs.toArray(<Integer> array);

这样我就可以获得数组的长度,但这给我带来了编译时错误。我尝试了上述几个略有不同的版本,但收到“非法表达式开始”错误或“无法从静态上下文引用非静态方法”错误。我感觉有一种更简单、更直接的方法可以实现我所忽略的目标。

private ArrayList<String> myWords;
private ArrayList<Integer> myFreqs;

public int findIndexOfMax () {
int[] array = new Array[100];
myFreqs.toArray(<Integer> array);
int maxVal = 0;
int maxIdx = -1;
for (int k = 0; k < array.length; k++) {
if (array[k] > maxVal) {
maxVal = array[k];
maxIdx = k;
}
}
return maxIdx;
}

最佳答案

您可以使用Java Streams来获取最大值的索引:

int index = IntStream.range(0, myFreqs.size()).boxed()
.max(Comparator.comparingInt(myFreqs::get))
.orElse(-1);

关于java - 如何找到 ArrayList<Integer> 中最大值的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56307212/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com