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. Попробуйте следующее:
- объединяйте информацию о поездках и расстояниях (я думаю, что это ваш объект путешествия) и помещайте каждое путешествие в путешествие ArrayList
- рассчитать расход топлива на каждом объекте Journey (должен быть полем Journey)
- сортировка (Collections.sort) поездок по расходу топлива
- выберите первые / последние три записи из путешествий и поместите их в другой список ArrayList selectedJourneys
- Реализуйте метод путешествия toString (вы можете использовать вкладки, чтобы получить табличное представление)
- печать выбранного маршрута (каждое путешествие в одну строку)
Использование Java 8 (Streaming-API) может помочь. Это возможный подход к вашей проблеме, или вам нужна была проблема для некоторых из пронумерованных шагов?