从文本文件

时间:2015-07-29 08:42:21

标签: java arraylist random-access

我有一个程序,我想在标签上显示一条随机行,然后在执行一个动作后,显示一个新的动作。我知道如何读取文件的内容,但确定如何显示随机行。此外,一旦显示一行,我不希望再次显示相同的行。我已经看到很多建议在谈论'数组'列表'和' arraylists'。我在这方面有点新手,非常感谢你的帮助。感谢。

我已经做到这一点,但不知道怎么做随机'部分...

BufferedReader in = new BufferedReader(new FileReader("lines.txt"));
    String str;

    List<String> list = new ArrayList<String>();
    while((str = in.readLine()) != null){
        list.add(str);
    }

    String[] stringArr = list.toArray(new String[0]);

2 个答案:

答案 0 :(得分:1)

在while循环之后,你有一个String列表,其中列表中的每个项目(每个String)都是文件中的一行,对吗?

因此,您生成一个介于0和列表长度之间的数字,以从文件中选择一个字符串,然后从列表中删除该字符串。

这样的东西
public String getRandomStringFromList(List<String> list)
{
    int index = new Random().nextInt(list.size());
    return list.remove(index);
}

(最好静态初始化Random一次,而不是每次使用它时动态,但这是你想做的事情的基础。)

此外,除非该行在文件中重复,否则不会显示相同的行两次。如果您可以在文件中包含重复的行,但只想在集合中存储一次,请使用另一个答案中所述的Set

答案 1 :(得分:0)

您可以使用Set而不是List。那你就不会有重复的行。更多信息,请在此处验证:https://docs.oracle.com/javase/tutorial/collections/interfaces/set.html