gpt4 book ai didi

java - 修改 ArrayList 内数组中的单个元素

转载 作者:太空宇宙 更新时间:2023-11-04 09:40:49 26 4
gpt4 key购买 nike

我必须为一个类编写一段代码,用于计算输入文件中字符的出现次数,然后对它们进行排序,我选择通过创建一个 ArrayList 来实现这一点,其中每个 object[] 都有两个元素,即字符和出现次数。

我试图增加代表出现次数的整数,但我无法让它发挥作用

我当前的尝试如下所示:

  for(int i=0;i<=text.length();i++) {
if(freqlist.contains(text.charAt(i))) {
freqlist.indexOf(text.charAt(i))[1]=freqlist.get(freqlist.indexOf(text.charAt(i)))[1]+1;
}

}

文本只是一个包含所有输入文件的字符串

freqlist 先前声明为

List<Object[]> freqlist=new ArrayList<Object[]>();

所以,我想知道如何增加或修改数组列表内的数组元素

最佳答案

一般来说,您的程序中有 3 个错误导致其无法运行。它无法工作,因为 for 循环有 i<=text.length()它应该是 i < text.length() ,否则会有异常(exception)。第二个错误是您使用 freqlist.contains(...)您假设对象数组的两个元素相同,或者换句话说数组相等,这是错误的假设。第三个错误是使用 freqlist.indexOf(...) ,它再次依赖于数组相等性。尽管这个数据结构 List<Object[]> 我使示例正常工作对于任务来说效率低下。最好使用Map<Character,Integer> 。这是:

import java.util.ArrayList;
import java.util.List;

class Scratch {
public static void main(String[] args) {
String text = "abcdacd";

List<Object[]> freqlist= new ArrayList<>();

for(int i=0;i < text.length();i++) {
Object [] objects = find(freqlist, text.charAt(i));
if(objects != null) {
objects[1] = (Integer)objects[1] +1;
} else {
freqlist.add(new Object[]{text.charAt(i), 1});
}

}

for (Object[] objects : freqlist) {
System.out.println(String.format(" %s => %d", objects[0], objects[1]));
}
}

private static Object[] find(List<Object[]> freqlist, Character charAt) {
for (Object[] objects : freqlist) {
if (charAt.equals(objects[0])) {
return objects;
}
}
return null;
}
}

关于java - 修改 ArrayList 内数组中的单个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56010801/

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