[英]How to sort objects in java based on from and to value
我想对 class 中的以下对象进行排序。 每个元素 object 有两个字段 from 和 to。 这里对于 e1 null 是从 v0 到。 我想将元素排序为 (null,v0),(v0,v1).....
public class Test7 {
public static void main(String[] args) {
Element e1 = new Element(null,"v0");
Element e2 = new Element("v0","v1");
Element e3 = new Element("v1","v2");
Element e4 = new Element("v2","v3");
Element e5 = new Element("v3","v4");
Element e6 = new Element("v4","v5");
List<Element> elementList = new ArrayList();
elementList.add(e3);
elementList.add(e2);
elementList.add(e1);
elementList.add(e5);
elementList.add(e6);
elementList.add(e4);
}
}
有人可以帮我吗?
你可以这样做:
Collections.sort(elementList);
并覆盖元素内的 compareTo function。 假设您要将第一个字符串与元素中的第一个字符串进行比较,将第二个字符串与元素中的第二个字符串进行比较,并且您的Element
class 如下所示:
public class Element implements Comparable<Element> {
private String first;
private String second;
public Element(String first, String second) {
this.first = first;
this.second = second;
}
public String getFirst() {
return first;
}
public String getSecond() {
return second;
}
//you can add this compare to function
@Override
public int compareTo(Element other) {
int compareFirst = compareStrings(first, other.getFirst());
return compareFirst == 0 ? compareStrings(second, other.getSecond())
: compareFirst;
}
private int compareStrings(String s1, String s2) {
return s1 == null ? -1 : s1.compareTo(s2);
}
}
您的Element
需要实现Comarable
接口。
之后Collections.sort(elementList)
将起作用。
@Saheb 上面的回答是使用Comparator
器来处理没有Comparable
接口的 Object。
这个初学者的书示例详细介绍了该主题。
感谢你的回答。 但我的要求有点不同。 我有一个像 class 元素这样的 pojo{
private String from;
private String to;
public Element(String from, String to) {
super();
this.from = from;
this.to = to;
}
}
如果我在列表中添加对象,我想对对象进行排序,例如 fromVersion->Toversion 示例:对象创建为 (null,v0),(v1,v2),(v0,v1),(v2,v3)...因此,如果我们对列表进行排序,它将变为 (null,v0),(v0,v1),(v1,v2),(v2,v3)。 这里一个 object 的版本是下一个 object 的版本。 我们得到一个对象链。 版本中的第一个对象是 null。 这意味着它没有父 object。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.