麻烦在java排序数组中打印索引

时间:2016-08-19 11:54:07

标签: java arrays

我在排序的随机数中打印索引时遇到问题,下面是显示已排序元素的代码片段:

Arrays.sort(values);        
for (double value : values) {         
    System.out.println(value);   
}        

有什么想法吗?

6 个答案:

答案 0 :(得分:2)

增强的for循环是获取数组值的快捷方法,但您无法访问元素的索引。请改用传统的for-loop:

for(int index = 0; index < values.length; index++) {
    System.out.println(index + ": " + values[index]);
}

答案 1 :(得分:1)

这是一个微不足道的场景。你只需要在排序数组上使用普通for循环。

for (int index=1; index<=values.length;index++) {         
    System.out.println("index : "+index+" value :"+values[index-1]);   
}        

答案 2 :(得分:0)

另一种方式(在某些观点上可能更灵活)只是添加外部整数值。

int index = 0;
for (double value : values) {         
    System.out.println(++index + ". " + value);   
}       

答案 3 :(得分:0)

在您的代码中,您将打印数组中的值,而不是索引。因此,如果你想通过使用for-each循环来打印带有值的数组索引,那么就是代码。

 Arrays.sort(values);     
 int i=0;
 for (double value : values) {         
     System.out.println("index is "+i+" , value is :"+value);
     i++;   
 }     

答案 4 :(得分:0)

试试这个

Arrays.sort(values); 
int i=0;      
for (double value : values) {         
    System.out.println("Index :"+i++ +" Value: "+value);   
}

答案 5 :(得分:0)

如果要跟踪数组中每个已排序条目的原始索引,则应收集索引数组并对该索引处的值进行排序。

public void test() {
    int[] values = {9,8,7,6,5,4,3,2,1};
    // Grab the indexes of each.
    Integer[] indexes = new Integer[values.length];
    for (int i = 0; i < indexes.length; i++) {
        indexes[i] = i;
    }
    // Sort them through the indexes.
    Arrays.sort(indexes, new Comparator<Integer> () {

        @Override
        public int compare(Integer o1, Integer o2) {
           return Integer.compare(values[o1], values[o2]);
        }
    });
    System.out.println(Arrays.toString(indexes));

    // Or in a single expressive Java-8 line:
    System.out.println(
            // Count the elements.
            IntStream.range(0, values.length)
                    // Turn int to Integer
                    .boxed()
                    // Sort it on the values behind the indexes.
                    .sorted((i, j) -> Integer.compare(values[i], values[j]))
                    // Make a list.
                    .collect(Collectors.toList())
    );
}

打印

  

[8,7,6,5,4,3,2,1,0]

完全符合预期。