在返回的排序后的ArrayList上使用重写的toString()方法不会考虑换行符

问题描述 投票:0回答:1

我有一个事件类,其中包含有关事件的信息,例如名称,位置,门票价格等。我还有一个日历类,其唯一的实例变量是添加到其中的事件的ArrayList。

我的toString()方法如下

public String toString() {
    String s = new String();
    for (int i = 0; i < calendar.size(); i++) {
        s = s + "\nEvent Name: " + calendar.get(i).getEventName() + " || Event Venue: "
                + calendar.get(i).getEventVenue() + " || Date: " + calendar.get(i).getDate() + " || Tickets Sold: "
                + calendar.get(i).getTicketsSold() + " || Ticket Price: " + calendar.get(i).getTicketPrice()
                + " || Overhead: " + calendar.get(i).getOverhead();
    }
    return s;
}

主要方法:

public class EventTester {

public static void main(String[] args) {

    Event e1 = new Event("Birthday", "Hotel", "2020-04-12", 100, 100, 1000);
    Event e2 = new Event("Easter", "Park", "2020-07-28", 200, 200, 2000);
    Event e3 = new Event("Christmas", "Garage", "2020-03-28", 300, 300, 3000);
    TRAPSCalendar tpc = new TRAPSCalendar();

    tpc.add(e1);
    tpc.add(e2);
    tpc.add(e3);

    System.out.println(tpc.toString());
    System.out.println(tpc.sortByDate().toString());

}

}

当添加事件后在日历对象上简单地使用它时,它就按预期工作了>>

第一张照片的输出:

事件名称:生日||活动地点:酒店||日期:2020-04-12 ||已售出门票:100 ||票价:100 ||开销:1000活动名称:复活节||活动地点:公园||日期:2020-07-28 ||已售出门票:200 ||票价:200 ||开销:2000活动名称:圣诞节||活动场地:车库||日期:2020-03-28 ||售出的门票:300 ||票价:300 ||开销:3000

问题是,当我在ArrayList上使用我的一种排序方法,然后在已排序的返回ArrayList上使用toString()方法时。它不会放入新行,因此对于由于某种原因放在括号中的已排序事件,我最终会得到一长行输出。

第二张打印输出:

[[名称:圣诞节||地点:车库||日期:2020-03-28 ||售出的门票:300 ||票价:300 ||开销:3000,名称:生日地点:酒店||日期:2020-04-12 ||已售出门票:100 ||票价:100 ||开销:1000,名称:复活节||地点:公园||日期:2020-07-28 ||已售出门票:200 ||票价:200 ||开销:2000]

我将不得不创建一个GUI来显示事件列表,因此每个事件的重要性将在排序后显示在新行上。另外,列表的原始顺序需要与将要显示的排序版本分开维护。

我有一个事件类,其中包含有关事件的信息,例如名称,位置,门票价格等。我还有一个日历类,其日历类的唯一实例变量是要添加事件的ArrayList ...

java arraylist tostring
1个回答
0
投票
我想像sortByDate方法不会返回TRAPSCalendar类型(因此是this引用),而是返回排序后的Collection。因此,第二个toString不会在日历上调用,而是在已排序的集合本身上调用。这就是为什么得到此结果(带有方括号)的原因。
© www.soinside.com 2019 - 2024. All rights reserved.