java - 根据相似元素的出现次数对数组列表进行排序

标签 java list sorting

我有一个包含 {2,2,1,1,1,5,4,4,4,4,4} 的 ArrayList,我想根据出现的次数对它进行排序每个元素。所以它会给出 {4,4,4,4,4,1,1,1,2,2,5}。我从哪里开始?

import java.util.*;

public class SortingL{

  public static void main(String[] args){

    ArrayList<Integer> list = new ArrayList<Integer>();

    Integer[] al = new Integer[] {2,2,1,1,1,5,4,4,4,4,4};
    list.addAll(Arrays.asList(al));

    sortL(list);

  }

  public static ArrayList<Integer> sortL(ArrayList<Integer> list){


    return list;
  }
}

最佳答案

一种解决方案是使用Collections#frequency:

List<Integer> list = Arrays.asList(2, 2, 1, 1, 1, 5, 4, 4, 4, 4, 4);

list.sort(Comparator.comparing(i -> Collections.frequency(list, i)).reversed());

System.out.println(list);

这将输出预期的结果:

[4, 4, 4, 4, 4, 1, 1, 1, 2, 2, 5]

关于java - 根据相似元素的出现次数对数组列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46508634/

相关文章:

JAVA Swing GridLayout 无法正常工作

java - ItemListener getitem() 不只返回名称

java - Hadoop MapReduce - 每个输入一个输出文件

python - 在Python中对列表列表进行反向索引

python - 将 CSV 的每一行存储为单独的列表/字典

java - 自动通过 Intent 进行指示

r - 访问 R 中列表的第一行

python - 无法在终端中使用 sort 命令对 txt 文件中的数据进行排序

sorting - 安卓sqlite : order by to sort international characters

powershell - 按文件中的第一列排序