如何在Java中避免String []中的重复?

时间:2017-08-31 18:54:32

标签: java arrays file button random

这个问题非常普遍,但是,因为我是一个Java菜鸟而且我没有多少练习,我无法应用我在其他主题中找到的答案。

所以这是我的情况:

我希望有一个 ArrayList ,其中包含指定文件夹的文件名,使用此代码我可以拥有它:

File dir = new File(" ++++++ Insert Path Here ++++++");
        List<String> list = Arrays.asList(dir.list(new FilenameFilter() {

            @Override
            public boolean accept(File dir, String name) {
                return name.endsWith(".mp3");
            }
        }));

String[] stockArr = new String[list.size()];
        stockArr = list.toArray(stockArr);

之后,我想用stockArr中包含的随机字符串命名一些 JButtons ,好的,很容易做到:

        JButton bottone1 = new JButton();
        JButton bottone2 = new JButton();
        JButton bottone3 = new JButton();

        Random r = new Random();

        bottone1.setText(stockArr[r.nextInt(stockArr.length)]);
        bottone2.setText(stockArr[r.nextInt(stockArr.length)]);
        bottone3.setText(stockArr[r.nextInt(stockArr.length)]);

现在我的问题: 我怎么能避免在 JButton的文本?

中有重复的随机字符串

P.S。:我不得不说,有时候,在寻找答案时,我无法理解某人的建议,因为他们只写了一部分代码,或者他们认为其他人有知识可以完全理解他们所写的内容。所以我问你是否可以更加具体,一步一步,就像教程一样,非常感谢:)

整个代码:

import java.awt.Container;
import java.io.*;
import java.util.*;
import javax.swing.*;

public class BottoniRandom {

    public static void main(String[] args) {

        JFrame finestra = new JFrame("ESEMPIO");
        finestra.setBounds(100, 500, 300, 200);

        Container contenuto = finestra.getContentPane();
        contenuto.setLayout(new BoxLayout(contenuto, BoxLayout.Y_AXIS));

        JButton bottone1 = new JButton();
        JButton bottone2 = new JButton();
        JButton bottone3 = new JButton();

        File dir = new File(" ++++++ Insert Path Here ++++++");
        List<String> list = Arrays.asList(dir.list(new FilenameFilter() {

            @Override
            public boolean accept(File dir, String name) {
                return name.endsWith(".mp3");
            }
        }));

        String[] stockArr = new String[list.size()];
        stockArr = list.toArray(stockArr);
        System.out.println(stockArr.length);
        Random r = new Random();

        bottone1.setText(stockArr[r.nextInt(stockArr.length)]);
        bottone2.setText(stockArr[r.nextInt(stockArr.length)]);
        bottone3.setText(stockArr[r.nextInt(stockArr.length)]);

        contenuto.add(bottone1);
        contenuto.add(bottone2);
        contenuto.add(bottone3);

        finestra.setVisible(true);
        finestra.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    }

}

0 个答案:

没有答案