修改"" class,以便toString方法对列表进行排序

时间:2014-03-29 04:30:16

标签: java list sorting arraylist tostring

嘿伙计们,我在这个java项目的最后一步,我想我知道从哪里开始这个最后一块,但我不知道如何。

我应该:

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

我怎么能开始?牛和马的名单是arraylist的一部分。

会涉及到收藏吗?这是我的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;

1 个答案:

答案 0 :(得分:1)

是。您可以在for的{​​{1}}循环之前致电Collections.sort(listOfHorses),并对listOfHorses执行相同操作。

让我指出 - 除了家庭作业 - 用listOfCows方法进行大量计算是一个糟糕的设计理念,更糟糕的设计理念是它有副作用(在这种情况下) ,修改arraylists)。

toString()应该没有副作用。当调试器或日志记录语句调用时,这些副作用将改变程序的作用并导致混淆。

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