Come ordinare più ArrayLists basato sull'ordine di un altro?

Ho difficoltà a capire il modo migliore per uscire per ordinare più elenchi basati sull'ordine ordinato di una list. Attualmente le liste sono in ordine basato sui loro indici. L'elenco di timeTime contiene stringhe di tempo nel formato (00:00 AM / PM). Si inizializzano così:

public static List<String> departureTime = new ArrayList<String>(); public static List<String> mode = new ArrayList<String>(); public static List<String> busNo = new ArrayList<String>(); public static List<String> busStopName = new ArrayList<String>(); public static List<String> arrivalTime = new ArrayList<String>(); public static List<String> dur = new ArrayList<String>(); 

Ho bisogno di ordinare tutti gli elenchi in base all'ordine ordinato dei tempi di partenza nell'arraysList di departureTime. Qual è il modo migliore per ordinare questi elenchi senza modificare la struttura dei dati risultante. Qualsiasi assistenza sarebbe altamente apprezzata.

  • EmptyThrowable: il file APK * .apk non esiste sul disco
  • Ottieni valori ArrayList <HashMap <String, String>
  • Come distriggersre la funzionalità di scorrimento automatico in Logcat?
  • Tentativo di includere una class di base (java. * O javax. *) In qualcosa che non sia una libreria di base
  • Imansible trovare la libreria di supporto preferenziale v7 in Eclipse ADT
  • Android: Notifica di gruppo nella barra di stato, ma non nell'elenco delle notifiche
  • Grazie,

    opaco

  • Come controllare l'accesso a Internet su Android? InetAddress non esce mai
  • Come eliminare i dati firebase dopo i giorni "n"
  • Qual è il tracciato predefinito per la pressione di un elemento di elenco
  • Android Google mappe APIv2 InfoWindow e Marker
  • Youtube Video in WebView non viene caricato
  • Multiple ViewPagers all'interno di un singolo ListView è in crash
  • 2 Solutions collect form web for “Come ordinare più ArrayLists basato sull'ordine di un altro?”

    Come è stato detto nel commento, sarebbe stato più facile creare un object contenente tutti i valori e quindi solo ordinare l'elenco degli oggetti.

    Se per una qualche ragione è imansible, dovrai codificare il proprio metodo di sorting, ad esempio il tipo di selezione, mentre effettua le operazioni di permutazioni su tutti gli oggetti elenchi.

    Ecco un algorithm semplice ma non ottimale. Sentitevi liberi di adattarlo per qualche altro tipo. Questo functionrebbe solo se tutte le liste hanno la stessa lunghezza.

      public void sort() { String[] departureTimeArray = departureTime.toArray(new String[departureTime.size()]); String[] modeArray = mode.toArray(new String[mode.size()]); //here you convert the other lists to arrayss int lenD = departureTimeArray.length; int j = 0; for(int i=0;i<lenD;i++){ j = i; for(int k = i;k<lenD;k++){ if(departureTimeArray[j].compareTo(departureTimeArray[k])>0){ j = k; } } permutation(departureTimeArray, i, j); permutation(modeArray, i, j); //here do the same for other arrayss } departureTime = Arrays.asList(departureTimeArray); mode = Arrays.asList(modeArray); //here convert back arrayss to list } private void permutation(String[] arrays, int i, int j) { String tmp = arrays[i]; arrays[i] = arrays[j]; arrays[j] = tmp; } 

    Vedere ad esempio qui per l'algorithm di selezione di selezione : selezione sort

    È ansible salvare l'indice di each tempo di partenza prima di ordinare in un Hashmap<String, Integer> . Quindi ordinate solo l'elenco come al solito, quindi salvate nuovamente gli indici in un altro hashmap.

    Ora sappi che una determinata string era in posizione n prima di ordinare ed è ora nella posizione n' dopo l'sorting. Quindi puoi scambiare manualmente gli elementi di altre liste con questa informazione.

    Questo approccio è fragile, perché se ci sono stati elementi ripetuti nell'elenco, allora non si può sapere quale era che dopo l'sorting. Quindi è meglio creare una class contenitore come suggerito nelle altre risposte.

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.