给定N个整数,乱序,分行打印每个数字和其位置


import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;

/**
* 给定N个整数,乱序,分行打印每个数字和其位置(空格分隔,数字可重复)
* e.g.
* input: -1,0,-1,3,2
* output:
* -1 0 2
* 0 1
* 2 4
* 3 3
*/
public class SortPrint {

public static void main(String[] args) {
int[] arr = new int[]{-1, 0, -1, 3, 2};
sortPrint(arr);
}

private static void sortPrint(int[] arr) {
if (arr == null || arr.length == 0) {
return;
}
Map<Integer, List<Integer>> map = new TreeMap<>();
int index = 0;
for (int a : arr) {
List<Integer> list;
if ((list = map.get(a)) != null) {
list.add(index);
} else {
list = new ArrayList<>();
list.add(index);
map.put(a, list);
}
index++;
}
if (!map.isEmpty()) {
map.forEach((num, indexes) -> {
System.out.print(num);
indexes.forEach(idx -> {
System.out.print(" ");
System.out.print(idx);
});
System.out.println();
});
}
}

}

/* 如有意见或建议,欢迎评论区留言;如发现代码有误,欢迎批评指正 */
原文地址:https://www.cnblogs.com/laydown/p/13648761.html