Bubblesort 根据计数将重复项排序到不同的列表中

Bubblesort sort duplicates into distinct list based on count

我有一个学校项目,但我需要一些提示。

我有一个如下所示的 ArrayList:

[0] Document 1
[1] Document 1
[2] Document 2
[3] Document 3
[4] Document 3
[5] Document 3
[6] Document 4

我需要使用 Bubblesort 来获得如下所示的不同列表(按每个文档在原始列表中出现的次数排序):

[0] Document 3
[1] Document 1
[2] Document 2
[3] Document 4

我可以自由地创建一个新的 ArrayList 或使用一个外部 for 循环来完成它 - 但它需要通过 Bubblesort 进行排序。

我已经创建了其他实现,这些实现根据每个文档的某些属性创建不同的列表 - 但现在面对每个文档在列表中出现的次数时,我无法找到一个干净的解决方案。

编辑:这是我用于作业其他部分的实现("attribute" 类似于我上面问题中的 "document")

int r = attributes.size() - 1;
    boolean swapped = true;
    while(swapped && r >= 0) {
        swapped = false;
        for(int i = 0; i < r; i++) {
            Attributes current = attributes.get(i);
            Attributes next = attributes.get(i + 1);
            if(current.occurrence > next.occurrence) {
                swapped = true;
                attributes.set(i, next);
                attributes.set(i + 1, current);
            }
        }
        r--;
    }

给你一个样板示例,你可以使用这样的东西。

List<Integer> arrList = Arrays.asList( 5, 0, 0, 2 );
    int freq = Collections.frequency(arrList, "0);

       System.out.println("Frequency of '0' is: "+freq);    
       }