1

ネストされた 3 つの TreeMap のセットがあります。

TreeMap<DayOfWeek, TreeMap<Court, TreeMap<Time, String>>> keyDay = new TreeMap<DayOfWeek, TreeMap<Court, TreeMap<Time, String>>>();
TreeMap<Court, TreeMap<Time, String>> keyCourt = new TreeMap<Court, TreeMap<Time, String>>();
TreeMap<Time, String> keyTime = new TreeMap<Time, String>();

予約のための店舗情報。ネストされた while ループを使用して、作成されたすべての予約を表示しようとしていますが、ネストされた while で、関連する親に関連する値のみを表示する方法が必要です。

ここに私が持っているものがあります:

        Iterator listOfDays = keyDay.keySet().iterator();
    Iterator listOfCourts = keyCourt.keySet().iterator();
    Iterator listOfTimes = keyTime.keySet().iterator();
    String output;

    while (listOfDays.hasNext()) {
        DayOfWeek currentDay = (DayOfWeek) (listOfDays.next());
        output += currentDay.toString() + "\n----------\n";
        while (listOfCourts.hasNext()){
            Court currentCourt = (Court) (listOfCourts.next());
            output += currentCourt.toString() + ":\n";
            while (listOfTimes.hasNext()){
                Time currentTime = (Time) (listOfTimes.next());
                String currentName = (String) keyTime.get(currentTime);
                output += currentTime.toString() + " - " + currentName + "\n";
            }
        }

...しかし、予想どおり (ただし、望ましくありません)、各 TreeMap のすべてのエントリを最後まで反復するだけです。

誰でも助けることができますか?

4

1 に答える 1

3

あまり明確ではありませんが (listOfDays、listOfCourts、listOfTimes とは何ですか?)、次のようなものが必要だと思います。

for (Map.Entry<DayOfWeek, TreeMap<Court, TreeMap<Time, String>>> dayEntry : keyDay.entrySet()) {
    DayOfWeek currentDay = dayEntry.getKey();
    output += currentDay.toString() + "\n----------\n";
    for (Map.Entry<Court, TreeMap<Time, String>> courtEntry : dayEntry.getValue().entrySet()) {
        Court currentCourt = courtEntry.getKey();
        output += currentCourt.toString() + ":\n";
        for (Map.Entry<Time, String> timeEntry : currentCourt.getValue().entrySet()) {
            Time currentTime = timeEntry.getKey();
            String currentName = timeEntry.getValue();
            output += currentTime.toString() + " - " + currentName + "\n";
        }
    }
}

つまり、マップは一連のマップ エントリとして表示でき、このエントリ セットを反復処理できます。各エントリにはキーと値があります。あなたの場合、値は別のマップであるため、値に対してこの操作を繰り返すことができます。

于 2011-03-26T18:39:18.883 に答える