2014-04-02 22 views
5

Tôi có một danh sách chứa một số giá trị theo thứ tự (vị trí chính xác), Bây giờ tôi muốn vuốt/đặt/thủ công thay đổi giá trị thành danh sách mảng. Dưới đây hình ảnh có thể cho ý tưởng của tôi.Change Array-II để Array-I. Để trộn chúng ta có thể sử dụng collection.shuffle(), nhưng ở đây tôi có một tệp văn bản, trong tệp văn bản đó tôi đã viết một vị trí ban đầu cũng như vị trí hiện tại của dữ liệu trong mảng vào tệp văn bản. ví dụ hình ảnh, chúng ta có một myfile.txt tên tập tin văn bản, tôi đã viết dữ liệu ở chỗ như thế này, "original_position ~ CURRENT_POSITION" ví dụ 0 ~ 0 1 ~ 2 2 ~ 4 3 ~ 3 4 ~ 1 vì vậy, dựa trên các dữ liệu trên tôi sẽ trộn/đặt mảng.cách trộn danh sách mảng theo cách thủ công

Trả lời

2

Ở đây tôi tìm thấy Giải pháp cho câu hỏi của tôi, hãy quan sát ở đây. "itemList_dump" là danh sách mảng chứa dữ liệu.

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() sẽ làm điều đó cho bạn. Collections.sort() sẽ sắp xếp theo thứ tự tự nhiên (A, B, C, D, E ..) nếu bạn muốn nó được sắp xếp.

7

Sử dụng Collections.shuffle(YOUR_ARRAY_LIST); để thực hiện.

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); 

Cách tiếp cận để phân loại thủ công đi như thế này:

Đọc và thêm dữ liệu của bạn từ tập tin để 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; 
} 

Và phương pháp chính của bạn là như sau:

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

Điều đó có thể đơn giản, nhưng ở đây senario khác, tôi có dữ liệu trong tệp văn bản, tệp văn bản đó chứa, original_position cũng như current_position của mảng, dựa trên đó tôi muốn thiết lập dữ liệu trong mảng-II. tức là trộn ngẫu nhiên. – user3285681

+0

Hướng dẫn sử dụng ngẫu nhiên của bạn sẽ luôn giống nhau. Như vậy, 0,1,2,3,4 phải luôn được trộn lẫn với 0,2,4,3,1 – ashokramcse

+0

Bạn có thể vui lòng phơi bày tập tin mẫu đó không. – ashokramcse

Các vấn đề liên quan