gpt4 book ai didi

android - 按多个字符串对Android中的Arraylist进行排序

转载 作者:太空狗 更新时间:2023-10-29 16:39:51 29 4
gpt4 key购买 nike

我想对这个 Arraylist 进行排序

public List<Machine> machines;

machines = machineController.execute().get();
Collections.sort(machines, new Comparator<Machine>() {
public int compare(Machine obj1, Machine obj2)
{
return obj1.getManufacturer().compareToIgnoreCase(obj2.getManufacturer());
}
});

现在列表从 A 到 Z 向我显示了制造商。这很好用。

宝马Z1,

小轮车X6,

大众捷达,

大众高尔夫,

问题是:如何按制造商和型号排序? (obj.getManufaturer & obj.getModel)

宝马X6,

宝马Z1,

大众高尔夫,

大众捷达

最佳答案

您需要覆盖 Machine 类中的“compare”以按制造商和型号进行排序。如果你看看你现在拥有它的方式,你只是在按制造商进行比较。您想按“机器”作为一个整体进行比较。

这应该足以解决您的问题,但如果您想要示例代码,请告诉我,我可以编辑这篇文章:)

编辑:我测试的工作示例:

在您的 Machine 类中使用:

public class Machine implements Comparable<Machine>

那么,你需要:

@Override
public int compareTo(Machine o) {
if (manufacturer.compareToIgnoreCase(o.manufacturer) == 0)
return model.compareToIgnoreCase(o.model);
else
return manufacturer.compareToIgnoreCase(o.manufacturer);
}

然后,您只需调用:

Collections.sort(machines);

编码愉快!

这是我个人用于测试的确切代码:

public class Machine implements Comparable<Machine> {

private String manufacturer;
private String model;
private double price;

public Machine(String man, String mod) {
this(man, mod, 0);
}

public Machine(String man, String mod, double p) {
manufacturer = man;
model = mod;
price = p;
}

/**
* @return the manufacturer
*/
public String getManufacturer() {
return manufacturer;
}

/**
* @return the model
*/
public String getModel() {
return model;
}

public double getPrice() {
return price;
}

@Override
public int compareTo(Machine o) {
if (manufacturer.compareToIgnoreCase(o.manufacturer) == 0)
return model.compareToIgnoreCase(o.model);
else
return manufacturer.compareToIgnoreCase(o.manufacturer);
}

@Override
public String toString() {
return manufacturer.toString() + " " + model.toString();
}

}

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

public class Blah {
public static void main(String[] args) {
List<Machine> machines = new ArrayList<>();

machines.add(new Machine("Volkswagen", "Jetta"));
machines.add(new Machine("Volkswagen", "Golf"));
machines.add(new Machine("BMW", "Z1"));
machines.add(new Machine("BMW", "X6"));

Collections.sort(machines);

for (Machine m : machines)
System.out.println(m.toString());
}
}

对我来说,这个输出:

BMW X6
BMW Z1
Volkswagen Golf
Volkswagen Jetta

关于android - 按多个字符串对Android中的Arraylist进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19686388/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com