01/10/2018, 09:34

Random dãy cho trước

Cho em hỏi em có list dữ liệu có cùng level =2 như sau:
Question [idQs=4, typeMultiply=false, content=Which of the following layers the @Controller annotation is used in?, level=2]
Question [idQs=7, typeMultiply=false, content=What is session scope?, level=2]
Question [idQs=8, typeMultiply=false, content=What is bean autowiring?, level=2]
Question [idQs=11, typeMultiply=false, content=What are the types of the transaction management Spring supports?, level=2]
Question [idQs=12, typeMultiply=false, content=Expression Language/ SpEL was introduced in which version of spring framework., level=2]
Question [idQs=13, typeMultiply=false, content=How to handle shut down of IoC container?, level=2]
Question [idQs=14, typeMultiply=false, content=Can we inject value and ref both together in a bean?, level=2]


nhưng các id question không liên tục, em chỉ muốn lấy 5 câu random trong đống đó thì phải làm sao ạ.

Vesper Link viết 11:40 ngày 01/10/2018

Bạn add tất cả các question trên vào một List, sau đó bạn random các số trong khoảng
0 - [kích thước List]. Giả sử List có 15 phần tử thì Random trong khoảng 0-15. Sau đó truy xuất phần tử theo index.

List<Question> list = new ArrayList<>();

// add tất cả các đối tượng question vào list
list.add(...);
....

Random randomizer = new Random();   

for(int i = 0; i < 5; i++)  {
    int size = list.size(); //Lấy kích thước list    
    int indexOfQuestion = randomizer.nextInt(size);  // Sinh số ngẫu nhiên trong kích thước của list
    Question question = list.get(indexOfQuestion);  //Lấy ra câu hỏi

    // Nếu bạn muốn lấy 5 câu hỏi khác nhau thì bạn phải loại bỏ câu hỏi đã bốc khỏi list
    list.remove(indexOfQuestion);
}





Bài liên quan
0