是否可以在string
中连接double
和ArrayList
?
它应该是这样的:
[itemA 1, itemB 10, itemC 5, ...]
我尝试在double
中将String
也写为ArrayList
,但后来Collections.sort(list)
不会对双打正确排序。
答案 0 :(得分:3)
那是你上课的时候。
class MyObject {
private String someString;
private double someDouble;
// Getters & setters
}
List<MyObject> myList = new ArrayList<>();
您可以保留此自定义对象的列表。
如果您希望能够对double
值上的列表进行排序,只需构建您的类以实现Comparable
接口。
class MyObject : Comparable<MyObject>{
private String someString;
private double someDouble;
@override
public int compareTo(MyObject o) {
return this.someDouble.compareTo(o.getSomeDouble());
}
}
答案 1 :(得分:0)
您可以使用apache commons中的Pair:
List<Pair<String, Double>> list = new ArrayList<>();
list.add(new ImmutablePair<>("STRING", 2.0));
答案 2 :(得分:0)
您可以创建一个类,如MyClass,并创建一个String变量和double值。
像,
class MyClass
{
private String strVlaue;
private String doubleValue;
//Constructor using fields, and getter/setter method
}
因为你想按双倍价值按顺序排列。
您可以使MyClass实现Comparable并在compareTo方法中实现自定义顺序或为MyClass创建比较器
1实施可比较
public class MyClass implements Comparable {
private String strVlaue;
private double doubleValue;
public MyClass(String strVlaue, double doubleValue) {
this.strVlaue = strVlaue;
this.doubleValue = doubleValue;
}
@Override
public int compareTo(Object o) {
MyClass mc = (MyClass) o;
return Double.compare(this.doubleValue, mc.getDoubleValue());
}
public String getStrVlaue() {
return strVlaue;
}
public void setStrVlaue(String strVlaue) {
this.strVlaue = strVlaue;
}
public double getDoubleValue() {
return doubleValue;
}
public void setDoubleValue(double doubleValue) {
this.doubleValue = doubleValue;
}
}
使用 Collections.sort(List<MyClass>)
进行排序。
2保持MyClass不实现Comparable,创建一个比较器。
public class MyComparator implements Comparator<MyClass>{
@Override
public int compare(MyClass o1, MyClass o2) {
return Double.compare(o1.getDoubleValue(), o2.getDoubleValue());
}
}
使用 Collections.sort(List<MyClass>, new MyComparator())
进行排序。