2015-02-23 2 views
0

У меня есть запрос, на который я хотел бы получить ваше мнение. Я сохранил в ArrayList() вызванные поездки, которые включают в себя регистрацию FlightNo (String), страну (String), людей (int) и другую в HashMap (float, String), называемую расстояниями, где String является страной и float - это расстояние. Я хочу сравнить две коллекции (путем проверки адресата), и если у них одинаковый вывод, где я получаю рейсNo, пункт назначения, расстояние, людей и другой атрибут (рассчитанный с расстояния и пассажиров).TreeMap <String, ArrayList <String>> специфическая печать/сортировка

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

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 (поплавок, String), в котором поплавок расстояние и струнный это country.It выглядит следующим образом:

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 of Strings.

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

Это код, который я написал, и возвращает мне данные 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; 
} 

в destinationsList.add я попытался дать хороший формат, когда я вступал значения, но не luck.And и я не знаю, если я должен хранить их другим способом, чтобы получить I объяснил первую и последнюю три записи в отношении FuelConsumption.Sorted за счет топлива вместо сортировки в настоящее время в соответствии с странами, как они это сделали.

спасибо, что заблаговременно !!

ответ

0

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

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

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

Смежные вопросы