gpt4 book ai didi

java - 在 Java 中使用 Arraylist 不重复

转载 作者:行者123 更新时间:2023-11-29 09:44:02 25 4
gpt4 key购买 nike

好的,所以我是 ArrayList 的新手,我想做的是制作一个程序,从一副 54 张卡片中随机获取 3 张卡片,没有任何重复。我不知道在我的 if 循环中放什么。请帮忙

import javax.swing.*;
import java.awt.*;
import java.util.*;
import java.util.ArrayList;

public class card_ran1 extends JFrame
{
public card_ran1()
{
ArrayList<Integer> Ran = new ArrayList<Integer>();
setLayout(new GridLayout(1,4,5,5));
Random random = new Random();
int i = random.nextInt(54) + 1 ;
int n = random.nextInt(54) + 1 ;
int m = random.nextInt(54) + 1 ;
Ran.add(i);

if (Ran.contains(n))
{
//what should go here
}
if (Ran.contains(m))
{
//what should go here
}
add(new JLabel(new ImageIcon("card/" + Ran.get(0) + ".png")));
add(new JLabel(new ImageIcon("card/" + Ran.get(1) + ".png")));
add(new JLabel(new ImageIcon("card/" + Ran.get(2) + ".png")));
}

public static void main(String[] args)
{
card_ran1 frame = new card_ran1();
frame.setTitle("Random Cards");
frame.setSize(600,300);
frame.setLocationRelativeTo( null );
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
frame.setVisible( true );
}
}

最佳答案

如果值是唯一的,请使用 Set,而不是 List

Set<Integer> set = new LinkedHashSet<Integer>(); // order is preserved

使用循环获取 3 个不同的值:

while (set.size() < 3)
set.add(random.nextInt(54) + 1);

如果你真的需要一个List,使用拷贝构造函数:

List<Integer> list = new ArrayList<Integer>(set);

只需几行代码即可完成所有事情。

关于java - 在 Java 中使用 Arraylist 不重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18500833/

25 4 0