TreeMap<String, ArrayList <String >> специфическая печать / сортировка

У меня есть вопрос, который хотел бы получить ваше мнение. Я храню в ArrayList(), называемом trips, который включает регистр flightNo(String), country(String), people(int) и другие в HashMap(float,String), называемый расстояниями, где String - страна и число с плавающей точкой. это расстояние. Я хочу сравнить две коллекции (проверив пункт назначения) и, если они совпадают, у меня есть выход, где я получаю flightNo, пункт назначения, расстояние, люди и другой атрибут (рассчитанный по расстоянию и пассажирам).

У меня есть вход, как ArrayList (поездки), в котором один и тот же рейс не может отправиться в разные страны

  No   Country People
 AB12  France   100
 CD23   UK      120
 AB12  Italy    80
 FR45  Italy    45
 SE56  Sweden   120 
 FR34  Norway   125
 CD23  Poland   200
 NM89  Romania  100
 KL78  Bulgaria 125

Другой вход похож на HashMap(float,String), в котором float - это расстояние, а String - это страна. Это выглядит так:

Country   Distance
France   900.45 miles
UK       1200.32 miles
Italy    1010.34 miles
Sweden   1500.89 miles 
Norway   140.12 miles
Poland   700.98 miles
Romania  600.21 miles   
Bulgaria 1035.23 miles

Поэтому я хочу проверить в соответствии с пунктом назначения и получить вывод, как это

  No   Country People   Distance       fuelConsumption(distance * people)
 CD23   UK      120  1200.32 miles       1000 (i.e)
 AB12  Italy    80   1010.34 miles       800
 FR45  Italy    45   1010.34 miles       500 
 SE56  Sweden   120  1500.89 miles       340 
 FR34  Norway   125  140.12 miles        310
 CD23  Poland   200  700.98 miles        250 
 NM89  Romania  100  600.21 miles        100 
 KL78  Bulgaria 125  1035.23 miles        90

Таким образом, я достиг того места, где у меня есть вся эта информация, хранящаяся в TreeMap (String,ArrayList), называемой деталями, где я имею в качестве ключа страны и поместил всю необходимую информацию в значения этого TreeMap в виде ArrayList. строк.

Я не знаю, как получить вывод в хорошем формате и, во-вторых, получить / распечатать первые три и последние три пункта назначения относительно расхода топлива.

Это код, который я написал и возвращает мне данные TreeMap, где я получаю значения и хочу как-то напечатать.

public Map<String, TreeSet<String>> getDetails()

{
    for (Float distance : destinations.keySet())

    {

        String destinations = destinations.get(distance);

        for (Journeys j : journeys) {
            String places = j.getDestination();

            if (destinations.equals(places)) {

               *//destinationsList is a TreeSet<String>*
                destinationsList = details.get(destinations);

                if (destinationsList == null) {
                    destinationsList = new TreeSet<String>();
                }

                destinationsList.add((j.getFlight() + "        "
                        + j.getCountry() + "      " + distance
                        + "miles" + "       " + j.getPeople()
                        + "         " + j.getFuelConsumption(distance))
                        + "\n");

                details.put(destinations, destinationsList);

            }

        }

    }

    return details;
}

в DestinationList.add я пытался дать хороший формат, когда я вводил значения, но не повезло. И также я не знаю, нужно ли мне хранить их с другим способом, чтобы получить, я объяснил первые и последние три записи Относительно расхода топлива. Сортировка по топливу вместо сортировки сейчас по странам, в которых они находятся, я это сделал.

Заранее большое спасибо!!

1 ответ

С моей точки зрения, вам не нужен TreeMap или TreeSet. Попробуйте следующее:

  1. объединяйте информацию о поездках и расстояниях (я думаю, что это ваш объект путешествия) и помещайте каждое путешествие в путешествие ArrayList
  2. рассчитать расход топлива на каждом объекте Journey (должен быть полем Journey)
  3. сортировка (Collections.sort) поездок по расходу топлива
  4. выберите первые / последние три записи из путешествий и поместите их в другой список ArrayList selectedJourneys
  5. Реализуйте метод путешествия toString (вы можете использовать вкладки, чтобы получить табличное представление)
  6. печать выбранного маршрута (каждое путешествие в одну строку)

Использование Java 8 (Streaming-API) может помочь. Это возможный подход к вашей проблеме, или вам нужна была проблема для некоторых из пронумерованных шагов?

Другие вопросы по тегам