使用LinkedHashMap来把字符串中每种字符的下标存储到对应的集合中。利用LinkedHashMap的有序性(提取元素和添加元素的顺序一致)来直接生成答案public static void printIndexes(String str){LinkedHashMap<Character, List<Integer>> IndexSet = new LinkedHashMap<>();for(int i=0;i<str.length();i++){Character c = str.charAt(i);if(!IndexSet.containsKey(c)){IndexSet.put(c, new ArrayList<Integer>());}IndexSet.get(c).add(i);}StringBuilder sb = new StringBuilder();for(char key:IndexSet.keySet()){List<Integer> values = IndexSet.get(key);if(values.size()>1){for(int i:values) {sb.append(key+&quot;,&quot;+i+&quot;,&quot;);}}}sb.deleteCharAt(sb.length()-1);System.out.println(sb);}String str = &quot;afcacbcbcki&quot;;printIndexes(str);a,0,a,3,c,2,c,4,c,6,c,8,b,5,b,7