繁体   English   中英

如何根据 from 和 to 值对 java 中的对象进行排序

[英]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.

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