gpt4 book ai didi

java - 多维数组操作 - Java

转载 作者:行者123 更新时间:2023-11-30 06:00:29 26 4
gpt4 key购买 nike

我有一系列数组,我从中提取数据并最终得到一个包含我想要的信息的最终数组。最终的数组是二维的,由大量单维数组组成,每个数组最多包含 3 个条目。

int[][] realOcc = new int[result.length][3];

数组保存数据的方式如下:第一个“单元格”保存名称,第二个“单元格”保存区域 ID,第三个“单元格”保存出现次数 - 一个 int 告诉我该名称在该特定区域 ID 中出现了多少次.

使用冒泡排序算法根据名称对数组进行排序后,我自然会看到许多我不希望出现的条目。例如,假设某个名称在特定区域 ID 中出现 3 次。该名称的数组条目如下所示:

Name1 regionID17 1
Name1 regionID17 2
Name1 regionID17 3
...
Name156 regionID1 1
Name168 regionID99 1
...

我想要做的是摆脱所有多余的条目,如与相同名称和 regID 相对应的条目,并且只保留特定区域中每个名称的最大出现次数。因此,以上面的示例为例,我希望在操作数组后看到的是:

Name1 regionID17 3
...
Name156 regionID1 1
Name168 regionID99 1
...

任何想法都将不胜感激,因为我几乎被难住了。请记住,由于我提取的数据数量相当大,我还需要保持代码高效。

最佳答案

我同意 Mario 的观点,你不应该在这里使用数组结构。您正在使用冒泡排序这一事实表明您正在学习某种入门编程类(class),因此您可能不知道 ArrayList s,HashSet s,.equals()方法或类似的方法,但这才是您真正想做的。使用自定义 .equals() 创建自定义对象方法 - 类似于:

public class Record{
String name;
String region;

public boolean equals(Object o){
Record r = (Record)o;
return name.equals(r.name) && region.equals(r.region);
}

public int hashCode(){
return name.hashCode()+region.hashCode();
}
}

然后你可以使用HashMap<Record, Integer>检查集合中是否已存在记录 - 如果存在,则将 count( map 的值)增加 1,否则添加它。

如果您希望所有内容按特定顺序排序,您可以定义自定义 .compareTo()方法并使用TreeMap或者,如果您希望所有内容都按插入顺序排列,请使用 LinkedHashSet<Record>保留该顺序。

关于java - 多维数组操作 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1195777/

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