繁体   English   中英

在ArrayList中连接字符串和双精度

[英]Connect a string and a double in a ArrayList

是否可以在ArrayList连接stringdouble ArrayList

它应该看起来像这样:

[itemA 1, itemB 10, itemC 5, ...]

我尝试过将double也写为ArrayList String来尝试,但是
Collections.sort(list)不会正确排序双打。

那是您上课的时间。

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());
 }
}

您可以从apache commons中使用Pair

List<Pair<String, Double>> list = new ArrayList<>();

list.add(new ImmutablePair<>("STRING", 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())进行排序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM