【问题标题】:how sort a vector list using collecton frameworks java如何使用集合框架java对向量列表进行排序
【发布时间】:2012-06-28 11:04:35
【问题描述】:

我正在尝试使用 Java 集合框架对 Vector 列表进行排序。

这是我的代码...

public class RiverList {

    public static void main(String[] args) {
        Vector<River> rivers = new Vector<River>();
        //name length and discharge

        River river3 = new River("Nil", 6852, 2660);
        River river5 = new River("Amazonas", 6448, 209000);
        River river1 = new River("Rhein", 1233, 2330);
        River river4 = new River("Donau", 2857, 6700);
        River river2 = new River("Oker", 128, 12);

        rivers.add(river1);
        rivers.add(river2);
        rivers.add(river3);
        rivers.add(river4);
        rivers.add(river5);

        System.out.println(rivers);

        // sort the river after length with help class collection

        System.out.println(rivers);

        // sort the river after discharge with help class collection

        System.out.println(rivers);
    }
}

public class River {
    private int length;
    private int discharge;
    private String name; 

    public River(String name, int length, int discharge) {
        this.name = name;
        this.length = length;
        this.discharge = discharge;
    }

    // getters and setters
    ...

    public String toString() {
        return name + ", Length = " + length + ", discharge = " + discharge + "\n";
    }
}

这是我所做的,但我被困在如何继续前进......

public class RiverLengthComparator implements Comparator {
    public int compare(Object arg0, Object arg1) {
        return 0;
    }
}

public class RiverDischargeComparator implements Comparator {
    public int compare(Object o1, Object o2) {
        return 0;
    }
}

输出应该是这样的(河流长度)...

("Nil", 6852, 2660);
("Amazonas", 6448, 209000);
("Donau", 2857, 6700);
("Rhein", 1233, 2330);
("Oker", 128, 12);

对于河流排放...

("Amazonas", 6448, 209000);
("Donau", 2857, 6700);
("Nil", 6852, 2660);
("Rhein", 1233, 2330);
("Oker", 128, 12);

谁能帮我解决这个问题。

【问题讨论】:

  • 以后,我建议使用ArrayList。永远不要使用Vector。如果我错了,请有人纠正我:向量是同步的,而 ArrayLists 不是(?)
  • 如果这是作业,请添加homework标签。
  • @fireshadow52 根据文档:是的。
  • 对不起,我不知道,以后会记住的,非常感谢
  • @fireshadow52 同步时出了什么问题

标签: java list sorting collections vector


【解决方案1】:

也许您的 compare 方法应该返回 0 以外的其他内容;) 想想你想要实现什么并阅读Comparator接口的文档。

也许使用Comparator&lt;River&gt; 而不仅仅是Comparator 将是第一步。

最后,您可能希望将Collections.sort(rivers, new RiverLengthComparator()); 与您要使用的比较器一起使用。

【讨论】:

    【解决方案2】:
    Collections.sort(vector);
    

    顺便说一句,您从这些打印语句中得到了什么??

    System.out.println(rivers);
    
    //sort the river after length with help class colection
    
    System.out.println(rivers);
    
    //sort the river after discharge with help class colection
    
    
    System.out.println(rivers);
    

    【讨论】:

    • 我认为 OP 正在搜索您提供的排序命令,而不是 cmets。但我认为他想使用他的自定义比较器而不是默认的sort 方法
    • 如果你运行程序,你应该得到三个排序的列表,第二个 println 在河流长度后排序,第三个在河流排放后排序
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-14
    • 1970-01-01
    • 1970-01-01
    • 2011-10-20
    • 2011-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多