【问题标题】:Modify a "" class such that the toString method sorts the list of修改一个 "" 类,以便 toString 方法对列表进行排序
【发布时间】:2014-03-29 04:30:16
【问题描述】:

大家好,我正在完成这个 java 项目的最后一步,我想我知道从哪里开始这个最后的部分,但我不知道该怎么做。

我应该:

修改一个类,使 toString 方法在遍历列表之前对牛列表和马列表进行排序。 (我应该做的一个例子)

我该如何开始?牛和马的列表是数组列表的一部分。

会涉及收藏吗?这是我的 toString 方法的代码。

  public String toString()
{

    NumberFormat fmt = NumberFormat.getCurrencyInstance();

    String output   =  "**************************************************\n"
                    +  "*                 List of Horses               *\n"
                    +  "**************************************************\n";

    for( Horse horse : listOfHorses )
    {
        output  += horse + "\n"
                +  "--------------------------------------------------\n";
    }


    output  +=  "\n**************************************************\n"
            +  "*                 List of Cows                *\n"
            +  "**************************************************\n";

    for( Cow cow : listOfCows )
    {
        output  += cow + "\nVisit Rate:\t\t\t" 
                + fmt.format( cow.getBillAmount() ) + "\n"
                + "--------------------------------------------------\n";
    }

    return output;

【问题讨论】:

    标签: java list sorting arraylist tostring


    【解决方案1】:

    是的。您可以在listOfHorses 上的for 循环之前调用Collections.sort(listOfHorses),并对listOfCows 执行相同操作。

    让我指出——撇开作业不谈——toString() 方法进行大量计算是一个糟糕的设计理念,而且它会产生副作用(在这种情况下,修改数组列表)。

    toString() 应该没有副作用。当被调试器或日志语句调用时,这些副作用会改变程序所做的事情并导致混乱。

    此外,执行output += string 的循环将比在StringBuffer 中构建字符串要慢。如果迭代次数很大,它会慢得多,因为它所做的工作将是 O(N^2),即与字符串的平方数成正比,而不是与数成正比字符串。

    【讨论】:

    • 感谢 Jerry,所以我只需要添加例如 Collections.sort(listOfCows); Collections.sort(listOfPatients); ?是的,我同意 toString 方法的评论,但它在描述中这样做:/
    • 是的,Collections.sort(listOfCows) 将就地对listOfCows 进行排序,也就是说,重新排序该 ArrayList 的元素。
    • 太棒了,我知道这似乎是一个简单的问题,只是不知道它这么简单。
    • 很高兴为您提供帮助。如果它有效,请记住“接受”答案。
    • @user3347866 Collections.sort() 是一个很好的方法。但是,您必须覆盖 Cow 类的 compareTo()equals()hashCode() 方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-03
    • 2020-02-03
    • 1970-01-01
    • 2010-12-20
    • 1970-01-01
    相关资源
    最近更新 更多