2016-04-05 9 views
-1

У меня есть массив с датами startDates. У меня также есть массив с датами, которые называются endDates. У меня также есть массив с longs, который называется dateDifferences. Теперь я печатаю где-то в своем коде, дату начала, а также разницу (рассчитанную с использованием startDate и endDate). Затем я повторяю это для всех объектов Date. Однако мне нужно, чтобы мой startDates был напечатан в порядке. Как я могу достичь этого, чтобы разница была рядом с startDate?Сортировка массива, который зависит от другого массива

ArrayList <Date> startDates = new ArrayList<Date>(); 
ArrayList <Date> endDates = new ArrayList<Date>(); 
ArrayList <Long> dateDifferences = new ArrayList<Long>(); 

В этих массивах добавить пары STARTDATE и ENDDATE и dateDifference в своих ArrayLists.

+0

введите некоторые коды. –

+0

@ShreeKrishna Я добавил некоторые, достаточно ли этого – gettingthere

+0

. Тогда, чтобы подвести итог вашему вопросу, вы хотите отсортировать 'startDates'. Это ? –

ответ

0

есть у рассматривал возможность Ur три массива один 2d массив с 3-мя строками:

int[][] multi = new int[3][10]

и сортировки его, как в этом ответе?

import java.util.Arrays; 
    import java.util.Comparator; 

public class Asdf { 

    public static void main(final String[] args) { 
     final String[][] data = new String[][] { 
       new String[] { "2009.07.25 20:24", "Message A" }, 
       new String[] { "2009.07.25 20:17", "Message G" }, 
       new String[] { "2009.07.25 20:25", "Message B" }, 
       new String[] { "2009.07.25 20:30", "Message D" }, 
       new String[] { "2009.07.25 20:01", "Message F" }, 
       new String[] { "2009.07.25 21:08", "Message E" }, 
       new String[] { "2009.07.25 19:54", "Message R" } }; 

     Arrays.sort(data, new Comparator<String[]>() { 
      @Override 
      public int compare(final String[] entry1, final String[] entry2) { 
       final String time1 = entry1[0]; 
       final String time2 = entry2[0]; 
       return time1.compareTo(time2); 
      } 
     }); 

     for (final String[] s : data) { 
      System.out.println(s[0] + " " + s[1]); 
     } 
    } 

} 

кредит Bert F. Sort a two dimensional array based on one column

0

Это поможет, если вы добавили больше контекста и/или пример того, что вы хотели. Но позвольте мне попытаться сделать это за вас. Основываясь на моем понимании, пример того, что вы хотите:

start date [1 jan 2016, 4 jan 2016, ...] 
end date [2 jan 2016, 7 jan 2016, ...] 
dateDiff [1, 3, ...] 

И потом, вы хотите напечатать что-то вроде:

1 jan 2016 : 1 
4 jan 2016 : 3 
... 

Есть несколько вариантов у вас есть здесь: 1. Вы дон Не нужно обязательно иметь массив dateDiff. Просто вычислите разницу дат между датой начала и окончания, когда вы печатаете дату начала. А потом распечатай разницу прямо там! 2. Если вы хотите предварительно вычислить его по любой причине, рассмотрите возможность использования лучшей структуры данных для задания. Карта будет работать, если у вас нет повторяющихся дат начала, но это может быть плохим предположением. И если это так, то массив кортежей может работать достаточно хорошо и, как правило, довольно хорош для такого типа работы.

Если это не сработает для вас, сообщите нам, почему или разделяйте больше контекста. Тогда вы часто найдете более полезные решения!

+0

Мне нужно отсортировать даты в startDate. Если я их сортирую, то аналоги в других списках массивов будут выведены из строя. – gettingthere