请问Java代码中如何给list中相同的元素各自分配递增的序号?(如下图所示)

请问Java代码中如何给list中相同的元素各自分配递增的序号?(如下图所示)

问题描述:

图片说明

 import java.util.*;
import java.util.Map.Entry;
import java.util.stream.*;

class Untitled {


    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<String>();
        list.add("1071");
        list.add("1071");
        list.add("1071");
        list.add("1071");
        list.add("1072");
        list.add("1072");
        list.add("1071");
        list.add("1070");
        Map<String, List<String>> result = list.stream()
            .collect(Collectors.groupingBy(x -> x));
        for (Entry<String, List<String>> vo : result.entrySet())
        {
            int i = 0;
            for (String s : (List<String>)vo.getValue())
            System.out.println(s + "," + (++i));
        }
    }
}

1072,1
1072,2
1071,1
1071,2
1071,3
1071,4
1071,5
1070,1

自定义类型排序需要实现equals方法,或Collections.sort传入比较器

 public static void main(String[] args) throws Exception {
        List<String> objs = Arrays.asList("22", "55", "56", "78","22", "55", "78", "22");
        Collections.sort(objs);
        String obj = null;
        int idx = 0;
        int len = objs.size();
        for(int i = 0; i < objs.size(); i++) {
            obj = objs.get(i);
            System.out.println(obj.toString() + "   " + (++idx));
            if(i + 1 < len && !obj.equals(objs.get(i + 1))) {
                idx = 0;
            }
        }
    }

结果:
22 1
22 2
22 3
55 1
55 2
56 1
78 1
78 2