gpt4 book ai didi

java - 按命中次数对二维数组进行排序

转载 作者:行者123 更新时间:2023-12-01 23:21:09 29 4
gpt4 key购买 nike

我有两个 ArrayList:

数组 01:

ArrayList<String> uniqueFiletypes --> which contains unique filetypes (e.g .zip etc..)

数组 02:

ArrayList<Integer> countFiletypes --> which counts how many of each filetype there is, for example 8 .zip's

直接跳到问题:

我需要进行某种“排名”,这意味着文件类型的最高计数获得第一名,等等......

另一个问题:它必须是一个Object[][](以支持JTable),这样才能轻松显示结果。

输出示例:我有 8 个 .zip、5 个 .java 和 2 个 .docx

Object[][] = {{"1", ".zip", "8"},{"2", ".java", "5"}, {"3", ".docx", "2"}}

其中{PLACE、FILETYPE、COUNT}

最佳答案

我假设两个列表中的项目顺序匹配。 IE。 uniqueFiletypes 列表中的第一项的命中数等于 countFiletypes 列表中的第一项。

我会执行以下操作:

  1. 循环列表,将条目添加到 map 中。

  2. 按降序对 countFiletypes 列表进行排序。

  3. 从 map 中提取文件类型,按照它们现在在有序列表中的顺序添加它们。

像下面这样的东西可能会起作用:

public static void main(final String[] args) {
final ArrayList<String> uniqueFileTypes = new ArrayList<String>();
uniqueFileTypes.add(".java");
uniqueFileTypes.add(".zip");
uniqueFileTypes.add(".docx");

final ArrayList<Integer> countFileTypes = new ArrayList<Integer>();
countFileTypes.add(5);
countFileTypes.add(8);
countFileTypes.add(2);

final Map<Integer, String> countedFileTypes = new HashMap<Integer, String>();

for (int i = 0; i< uniqueFileTypes.size(); i++ ) {
countedFileTypes.put(countFileTypes.get(i), uniqueFileTypes.get(i) );
}

Collections.sort(countFileTypes);
Collections.reverse(countFileTypes);

final Object[][] data = new Object[countedFileTypes.size()][3];

for(int i = 0; i<countedFileTypes.size(); i++) {
final Integer count = countFileTypes.get(i);
data[i] = new Object[]{(i+1), countedFileTypes.get(count), count};
System.out.println("{" + (i+1) + "," + countedFileTypes.get(count) + "," + count + "}");
}
}

实际上并不需要主要方法和系统输出,我只是用它们来测试我的解决方案,它产生了以下输出:

{1,.zip,8}
{2,.java,5}
{3,.docx,2}

当然,这意味着点击次数和文件类型之间存在联系,但这可能不正确。例如,如果 docx 和 java 文件格式都有 9 次点击,则此解决方案将不起作用。

关于java - 按命中次数对二维数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20616715/

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