在List / ArrayList </integer,string>中随机对象<integer,string>的整数进行混洗

时间:2012-09-18 22:39:06

标签: java list shuffle

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

public class Data{
    public int n;
    public String p;

    public Data(int N, String P) {
        n = N;
        p = P;
    }

}

如何改变对象的整数:数据。所以String保持在同一个位置,并且Integer得到了洗牌。

2 个答案:

答案 0 :(得分:3)

循环遍历list并将每个int对象的Data存储在单独的列表中。使用Collections.shuffle(...)随机播放此列表。循环遍历此新的随机列表,并将n的每个相应成员的list字段设置为随机列表中找到的新随机int

答案 1 :(得分:0)

可能必须自己做:

for (int i = list.size(); i > 0; i--) {
    int j = (int)(Math.random() * (i + 1));
    int temp = list.get(i).n;
    list.get(i).n = list.get(j).n;
    list.get(j).n = temp;
}

你可以从java库中做的最好的事情是首先将它分成两个列表,一个是int,一个是字符串,然后只对int进行洗牌(使用Collections.shuffle),然后将两个列表合并为一个列表DATAS