当前位置: 首页 > 知识库问答 >
问题:

基于索引值的排序列表

羊舌自强
2023-03-14
LinkedHashSet<List<String>> sorted = new LinkedHashSet<List<String>>();
List<String> data1 = Database.getData(uuid);
double price = Double.valueOf(data1.get(2))

data1.add("testval");
data1.add("testval");
data1.add("100.00");

sorted.add(data1);
List<String> data2 = Database.getData(uuid);
double price = Double.valueOf(data2.get(2))

data2.add("anotherval");
data2.add("anotherval");
data2.add("50.00");

sorted.add(data2);

按降序排序的LinkedHashSet的输出。

testval testval 100.00
anotherval anotherval 50.00

对不起,如果这是混淆,我不知道如何去排序像这样。

共有1个答案

徐正雅
2023-03-14

创建一个新类来表示您的复杂对象。如果可以在对象中存储多个值,则不需要在列表中存储多个值。

public class ComplexObject {
    private String description1;
    private String description2;
    private Double value;

    public ComplexObject(String description1, String description2, Double value) {
        this.description1 = description1;
        this.description2 = description2;
        this.value = value;
    }

    public void setDescription1(String description1) {
        this.description1 = description1;
    }

    public String getDescription1() {
        return description1;
    }

    public void setDescription2(String description2) {
        this.description2 = description2;
    }

    public String getDescription2() {
        return description2;
    }

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

    public Double getValue() {
        return value;
    }
}

然后将元素添加到列表中,并使用新的自定义比较器对其进行排序:

public static void main(String[] args) {

    List<ComplexObject> complexObjectList = new ArrayList<ComplexObject>();

    //add elements to the list
    complexObjectList.add(new ComplexObject("testval","testval",100.00d));
    complexObjectList.add(new ComplexObject("anotherval","anotherval",50.00d));

    //sort the list in descending order based on the value attribute of complexObject
    Collections.sort(complexObjectList, new Comparator<ComplexObject>() {
            public int compare(ComplexObject obj1, ComplexObject obj2) {
                return obj2.getValue().compareTo(obj1.getValue()); //compares 2 Double values, -1 if less , 0 if equal, 1 if greater
            }
        });

    //print objects from sorted list
    for(ComplexObject co : complexObjectList){
        System.out.println(co.getDescription1()+" "+co.getDescription2()+" "+co.getValue());
    }
}

产出:

testval testval 100.0
anotherval anotherval 50.0
 类似资料:
  • 问题内容: 可以说我有这样的表: 我想得到的是这样的表: 发生的第一件事是基于column进行排序。 发生的第二件事是基于列的,但仅基于列中具有相同数字的行 在不使用任何数据库引擎的情况下应该如何解决此问题? 问题答案: 通常,通常使用where 是包含所有三个值的类型(例如,“ foo”,第一行的5、0)来执行此操作。 然后,您将编写一个比较在中呈现给它的两个对象的Int1值的,如果给出了明确的

  • 问题内容: 基于python,用pandas排序降序数据框: 鉴于: df如下所示: 我想要类似的东西: 这应该相对于列“ x”和“ y”的平方值的总和来排序完整的数据框,然后给我: 升序或降序无关紧要。有没有一个简单而好的方法?我找不到解决方案。 问题答案: df.iloc[(df.x 2 + df.y 2).sort_values().index] 在如何根据字符串索引上的自定义顺序对熊猫数据

  • 问题内容: 我想基于一个隐藏列对行进行排序。 说我有一个像这样的JTable 现在,我还有一个隐藏的column3,但我不想显示。当用户单击Column2时,应基于Column3(隐藏列)而不是基于Column2对行进行排序。 如何在JTable中实现呢? 问题答案: 您可以默认将TableRowSorter添加到JTable中,但是有RowSorter,没有什么比Darryl的Multisort

  • 这里对排序列表也提出了类似的问题,但所使用的解决方案对分不适用于保留排序列表。 假设我有一个列表,按相反的顺序排序,键入中间元素, 我想在中间的元素上应用一系列阈值,它位于一个单独的排序列表中,比如 我试图找出第一个元素的索引小于阈值。在上面的示例中,它应该返回, 建议如何以最快的方式完成?

  • 问题内容: 我需要对列表进行排序,然后返回带有列表中已排序项目索引的列表。例如,如果我要排序的列表是,则需要返回。 这个问题以字节为单位发布,但我认为我会在这里重新发布。 http://bytes.com/topic/python/answers/44513-sorting-list-then-return-index- sorted-item 我的具体需求是根据对象的属性对对象列表进行排序。然后

  • 我正在使用Python-3.6和pandas-0.24.1 我有一个熊猫数据帧: 我需要在特定索引上找到的值 错误: 在熊猫中迭代特定列的所有元素的理想方法是什么?