【问题标题】:Sorting ArrayList without sorting the index in java对ArrayList进行排序而不对java中的索引进行排序
【发布时间】:2026-02-15 20:00:01
【问题描述】:

我有ArrayList,其中包含一个值和索引,如何在不排序索引的情况下对值进行排序?

示例:

 ArrayList<Integer> arr = new ArrayList<Integer>();
 arr.add(1,100);
 arr.add(2,50);
 arr.add(3,10);

结果将是 {(3,10),(2,50),(1,100)} 谢谢 :D

【问题讨论】:

  • 你确定这是ArrayList&lt;Integer&gt;
  • 但是排序意味着改变索引。
  • 我猜想通过反对票和投票结束,您并不清楚。整数的排序数组列表将只是 [10,50,100],没有“排序索引”的概念。它要么已排序,要么未排序。
  • ArrayList 只存储一个值,而不是两个。您可能正在寻找Map...
  • @MartinStrejc 这不是荒谬的。听起来 OP 想要对数组进行排序,但同时还要跟踪元素在排序之前的索引。

标签: java sorting arraylist


【解决方案1】:

除了Map 选项之外,您还可以考虑使用某种键值对,并将其存储在数组中并根据值对数组进行排序。

请参阅this 了解潜在的键值对,或自己制作。

一个例子:

package com.example;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class KeyValue {

    private int key;
    private Integer value;

    public KeyValue(int i, Integer j) {
        key  = i;
        value = j;
    }

    public static void main(String[] args) {

        List<KeyValue> arr = new ArrayList<KeyValue>();
        arr.add(new KeyValue(1, 100));
        arr.add(new KeyValue(2, 50));
        arr.add(new KeyValue(3, 10));
        Collections.sort(arr, new Comparator<KeyValue>(){

            @Override
            public int compare(KeyValue arg0, KeyValue arg1) {
                return Integer.compare(arg0.getValue(), arg1.getValue());
            }

        });
        for (KeyValue kv : arr){
            System.out.println(kv);
        }
    }

    public int getKey() {
        return key;
    }

    public void setKey(int key) {
        this.key = key;
    }

    public Integer getValue() {
        return value;
    }

    public void setValue(Integer value) {
        this.value = value;
    }

    @Override
    public String toString(){
        return "("+key+","+value.toString()+")";                
    }

}

【讨论】:

    【解决方案2】:

    您的要求没有意义,因为元素的索引与它的排序方式直接相关。你应该使用Map 或类似的东西。

    【讨论】:

    • 其实我很困惑我必须使用什么结构。我想使用 knn 和欧几里得距离对图像进行分类。距离是每个图像的RGB之间的差异。所以我需要对距离进行排序并将其分类到最近的图像..