在文件中查找唯一的单词-Java

在文件中查找唯一的单词-Java,java,Java,使用msdos窗口,我正在amazon.txt文件中进行管道传输。 我正在尝试使用集合框架。记住,我要记住这个 尽可能简单。 我要做的是数一数文件中所有唯一的单词。。。没有重复的 这就是我目前所拥有的。这是我的第一个java项目 import java.util.Scanner; import java.util.ArrayList; import java.util.Iterator; public class project1 { // ArrayList<String&g

使用msdos窗口,我正在amazon.txt文件中进行管道传输。 我正在尝试使用集合框架。记住,我要记住这个 尽可能简单。 我要做的是数一数文件中所有唯一的单词。。。没有重复的

这就是我目前所拥有的。这是我的第一个java项目

import java.util.Scanner;
import java.util.ArrayList;
import java.util.Iterator;

public class project1 {

    // ArrayList<String> a = new ArrayList<String>();

    public static void main(String[] args) {
        Scanner  sc = new Scanner(System.in); 
        String  word;
        String grab;

        int count = 0;
        ArrayList<String> a = new ArrayList<String>();
        // Iterator<String> it = a.iterator();

        System.out.println("Java project\n");

        while (sc.hasNext()) {      
            word = sc.next();  
            a.add(word); 
            if (word.equals("---")) {
            break;
            }
        }

        Iterator<String> it = a.iterator();

        while (it.hasNext()) {
            grab = it.next();

            if (grab.contains("a")) {
                System.out.println(it.next()); // Just a check to see
                count++;
            }
        }
        System.out.println("I counted abc = ");
        System.out.println(count);
        System.out.println("\nbye...");
    }
}
import java.util.Scanner;
导入java.util.ArrayList;
导入java.util.Iterator;
公共类项目1{
//ArrayList a=新的ArrayList();
公共静态void main(字符串[]args){
扫描仪sc=新的扫描仪(System.in);
字符串字;
抓绳器;
整数计数=0;
ArrayList a=新的ArrayList();
//迭代器it=a.Iterator();
System.out.println(“Java项目\n”);
而(sc.hasNext()){
word=sc.next();
a、 加(字);
if(字等于(“--”){
打破
}
}
迭代器it=a.Iterator();
while(it.hasNext()){
grab=it.next();
if(grab.contains(“a”)){
System.out.println(it.next());//只需检查一下
计数++;
}
}
System.out.println(“I counted abc=”);
系统输出打印项次(计数);
System.out.println(“\n字节…”);
}
}

在您的版本中,单词列表
a
将包含除重复之外的所有单词。你也可以

(a) 检查每个生词,如果它已经包含在列表中(
list#contains
是您应该调用的方法),或者是建议的解决方案

(b) 将
ArrayList
替换为
TreeSet
。这将自动消除重复项并按字母顺序存储单词

编辑

如果要计算唯一单词的数量,请执行与上面相同的操作,所需的结果就是集合大小。因此,如果您输入序列“a b c-”,结果将是3,因为有三个唯一的单词(a、b和c)。

如果不需要计算每个单词出现的频率,请使用HashSet(未排序)或TreeSet(排序),如果需要,请使用Hashtable(未排序)或TreeMap(排序)


如果有您不想要的单词,请将它们放入哈希集中,并检查其中是否不包含扫描仪在放入集合之前找到的单词。如果您只需要字典中的单词,请将您的字典放入哈希集中,并检查它是否包含扫描仪在放入集合之前找到的单词。

请添加家庭作业标记。练习更好的复制粘贴技能:)Nicolai,当您从中复制的编辑器使用选项卡进行缩进时,会发生这种情况。很烦人-你必须重新格式化每一行…我改变了原来的帖子-我想数一数所有原来的单词。。没有重复。文件中有很多“a”字母(如:和或段落)。然而,我正试图找到a本身,我怎么能做到这一点,而不计算所有的字母a,换句话说。?我尝试了if(grab.contains(“a”))好的,我按照你说的做了,并使用了TreeSet。。算了一下,得到了8个独特的单词,谢谢。记住,就树集而言,
“Word”
“Word”
是两个不同的单词。因此,如果希望它不区分大小写,则必须先执行
toLowerCase()
toUpperCase()
,然后再将
字符串
添加到TreeSetDoes TreeSet count整数?我不想数一数!树集将包含您放入其中的每个独特的东西。如果你不想计算整数、标点符号或其他什么,不要把它们放在集合中。文件中有很多“a”字母(如:和或段落)。然而,我正试图找到a本身,我怎么能做到这一点,而不计算所有的字母a,换句话说。?我尝试了if(grab.contains(“a”))如果我将其放入哈希集中,我将如何使用扫描仪检查这些单词?您首先使用扫描仪拾取一系列字符。然后将该字符序列转换为所有小写(假设哈希集中的所有单词都是小写),然后确定该单词是否存在于哈希集中。