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

标签 java list sorting arraylist tostring

嘿,大家好,我正在执行这个 java 项目的最后一步,我想我知道从哪里开始完成这最后的部分,但我不知道如何开始。

我应该:

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

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

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

最佳答案

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

让我指出——撇开家庭作业不谈——用 toString() 方法进行大量计算是一个糟糕的设计理念,而如果它有一边的话,那就更糟糕了效果(在本例中,修改数组列表)。

toString() 应该没有副作用。当被调试器或日志语句调用时,这些副作用将改变程序的功能并导致困惑。

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

关于java - 修改 ""类,以便 toString 方法对列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22727013/

相关文章:

java - 一键执行两项操作

java - 只要 ServerSocket 空闲,Linux 上的 Tomcat6 就会使用 100% 的 CPU

java - 使用 JAXB 解码通用列表

java - 序列化接口(interface)列表 GSON

java - 不知道如何洗牌

java - 如何根据对象的变量之一对对象列表进行排序

arrays - 对描述多边形的线段数组进行排序和分组

java - 如何在 Java 中覆盖 Dropwizard/Jetty 参数以获得高性能?

java - 如何使用 HttpURLConnection 获取重定向的 URL 和内容

java - 通过查看枚举将剩余颜色添加到数组列表中