2014-04-02 6 views
5

Ho un arraylist contiene alcuni valori che sono in un ordine (posizioni corrette), Ora voglio scorrere/impostare/shuffle manuale modificare i valori in disordine dell'arrayylist. L'immagine qui sotto può dare la mia idea. Cambia Array-II in Array-I. Per rimescolare possiamo usare collection.shuffle(), ma qui ho un file di testo, in quel file di testo ho scritto una posizione originale e la posizione corrente dei dati nell'array sul file di testo. per esempio l'imaging, abbiamo un nome di file di testo MyFile.txt, ho scritto i dati in che, come questo, "original_position ~ Current_position", per esempio 0 ~ 0 1 ~ 2 2 ~ 4 3 ~ 3 4 ~ 1 quindi, in base ai dati di cui sopra, vorrei mescolare/impostare la matrice.come mischiare manualmente l'elenco di array

risposta

2

Qui ho trovato la soluzione alla mia domanda per favore osservatore qui. "itemList_dump" è un arraylist che contiene dati.

if (i < itemList_dump.size()) { 

    MyBitamp Data = itemList_dump.get(original_position_val); 
      // setting Values according to our algorithm 
        Data.setItemCurPos(original_position_val); 
        Data.setItemPosition(current_positon_val); 
        Data.setrotation(rotataion_val); 

       } 
      } 
      Collections.sort(itemList_dump, new Comparator<MyBitamp>() { 

       @Override 
       public int compare(MyBitamp o1, MyBitamp o2) { 
        if (o1.getItemPosition() > o2.getItemPosition()) { 
         return 1; 
        } else if (o1.getItemPosition() < o2.getItemPosition()) { 
         return -1; 
        } else { 
         return 0; 
        } 
       } 
      }); 
4

Collections.shuffle() lo farà per voi. Collections.sort() lo ordinerà nell'ordine naturale (A, B, C, D, E ..) se vuoi che sia ordinato.

7

Utilizzare Collections.shuffle(YOUR_ARRAY_LIST); per farlo.

List<String> ranList = new ArrayList<String>(); 
    // populate the list 
    ranList.add("A"); 
    ranList.add("B"); 
    ranList.add("C"); 
    System.out.println("Initial collection: " + ranList); 
    // shuffle the list 
    Collections.shuffle(ranList); 
    System.out.println("Final collection after shuffle: " + ranList); 

Il modo di approccio per la cernita manuale è questa:

Leggi e aggiungere i dati da file Map

private static Map<String, String> readFile(String fileNameWithPath) throws Exception { 
    Map<String, String> map = new LinkedHashMap<String, String>(); 
    File file = new File(fileNameWithPath); 
    BufferedReader bufferedReader = new BufferedReader(new FileReader(file)); 
    String sCurrentLine; 
    String[] splitPosition; 
    while ((sCurrentLine = bufferedReader.readLine()) != null) { 
     splitPosition = sCurrentLine.split("~"); 
     map.put(splitPosition[0], splitPosition[1]); 
    } 
    return map; 
} 

e il metodo principale è simile:

try { 
     List<String> list = new ArrayList<String>(); 
     List<String> customeRandomList = new LinkedList<String>(); 
     list.add("A"); 
     list.add("B"); 
     list.add("C"); 
     list.add("D"); 
     list.add("E"); 
     Map<String, String> map = Test.readFile("D://RandomList.txt"); 
     for (Map.Entry<String, String> entry : map.entrySet()) { 
      customeRandomList.add(list.get(Integer.parseInt(entry.getValue()))); 
     } 
     for (String result : customeRandomList) { 
      System.out.println(result); 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
+0

Questo potrebbe essere semplice, lo so, ma qui Senario è diverso, ho i dati nel file di testo, il file di testo contiene, original_position nonché current_position della matrice, sulla base di tale vorrei imposta i dati in array-II. io manuale shuffle. – user3285681

+0

Il tuo shuffle manuale sarà sempre lo stesso. Pertanto, lo 0,1,2,3,4 dovrebbe essere sempre casuale per 0,2,4,3,1 – ashokramcse

+0

Potrebbe esporre il file di esempio. – ashokramcse

Problemi correlati