集合中解决重复问题却不知到错在哪里

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果
package TM_sl_12;

import java.util.*;

public class Test5 {
    public static void main(String[] args) {
        Random r = new Random();
        List<Integer> dianshu = new ArrayList<>();
        dianshu.add(r.nextInt(6) + 1);//增加的数的范围是1-6
        dianshu.add(r.nextInt(6) + 1);
        dianshu.add(r.nextInt(6) + 1);
        dianshu.add(r.nextInt(6) + 1);
        System.out.println(dianshu);
        for (int i = 0; i < dianshu.size(); i++) {//循环来判断后面的数是否与前面的数相同
            for (int j = 1; j < dianshu.size(); j++) {
                while (dianshu.get(j) == dianshu.get(i)) {
                    dianshu.set(j, r.nextInt(6) + 1);//我想要集合里的数避免重复,但用这个代码却输不出任何数,我不知道错哪里
                }
            }
        }
System.out.println(dianshu);//无任何输出
}
}

并不是没输出,而是你代码中存在死循环,你想一下,当i=1的时候,j=1,那么里边的while循环就是一个死循环,因为你比较的是同一个元素,必然相同,你再改也一样,所以就死循环了,逻辑上的问题