【问题标题】:Java Swing read only unique lines from file into JtextAreaJava Swing 仅将文件中的唯一行读取到 JtextArea
【发布时间】:2017-12-12 10:49:31
【问题描述】:

您好,我正在开发一个 Swing 应用程序,它从文本文件中读取内容并将它们添加到 JTextArea。 我可以使用textarea.read() 方法读取文件内容

但问题是文本文件包含许多不必要的重复项,需要丢弃。

阅读代码如下:

private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {                                         

BufferedReader reader = new BufferedReader(new FileReader(new File("D:/abc.txt")));          
jTextArea1.read(reader, "D:/abc.txt");

}

我看到有人建议使用LinkedHashSet,但我不知道如何在这种情况下使用它。

我需要一个只能从文本文件中读取唯一行并将其放入jTextArea 的解决方案。

【问题讨论】:

    标签: java swing bufferedreader filereader jtextarea


    【解决方案1】:

    我需要一个只能从文本文件中读取唯一行并将其放入 jTextArea 的解决方案。 - 我认为更好的解决方案是读取输入文件的所有行,而不是只有那些独一无二的。这样做会更容易。您可以创建一个 while 循环来读取输入文件的每一行,将此行分配给 String 变量,然后将此行添加到在此循环之外声明的 LinkedHashSet<String> yourSet。您可以使用yourSet.add(String yourString) 方法将这些行(字符串)添加到yourSet。之后,您可以遍历您的集合并将每个字符串行发送到yourJTextArea

    for(String s : yourSet) {
        yourJTextArea.append(s + "\n" );
    }
    

    【讨论】:

    • 好的,如果一切正常,请告诉我,因为我在没有访问编译器的情况下编写它以检查这一切是否足够正常,但应该还可以。
    • 完美运行,但内容作为连续流添加到 jTextArea 中,没有换行符。您如何建议也包含换行符?这是我所做的: BufferedReader br = new BufferedReader(new FileReader(new File("D:/abc.txt")));字符串 readLine = ""; LinkedHashSet lh = new LinkedHashSet(); while ((readLine = br.readLine()) != null) { lh.add(readLine); } for(String s : lh) { jTextArea1.append(s); }
    • 没关系添加 jTextArea1.append(s + "\n");成功了。感谢您的帮助:)
    • @NyteFyre 如果我的回答对您有所帮助,您可以考虑支持我的回答并在左侧检查它作为已接受的答案。祝你一切顺利!
    【解决方案2】:

    您应该使用 .readLine() 逐行读取文件并将该行添加到 HashSet 对象,集合只允许唯一元素。 一旦您阅读了整个文件并将它们添加到集合中,您就可以将字符串添加到文本区域

    【讨论】:

      【解决方案3】:

      Set 确实是一个很好的解决方案。在这种情况下,从新行读取文件 in.nextLine() 将值存储在 String str = new String(value) 然后 set.add(str) 用 Set 中的值填充 textArea 后

      【讨论】:

        猜你喜欢
        • 2011-09-15
        • 2023-04-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多