Найти уникальные слова в файле - Java - PullRequest
0 голосов
/ 09 января 2010

Используя окно 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...");
    }
}

Ответы [ 2 ]

9 голосов
/ 09 января 2010

В вашей версии список слов a будет содержать все слова, но также будет дублироваться. Вы можете либо

(a) проверьте каждое новое слово, если оно уже включено в список (List#contains - это метод, который вы должны вызвать), или рекомендуемое решение

(b) заменить ArrayList<String> на TreeSet<String>. Это автоматически удалит дубликаты и сохранит слова в алфавитном порядке

Редактировать

Если вы хотите посчитать уникальные слова, сделайте то же самое, что и выше, и желаемый результат - размер коллекции. Поэтому, если вы ввели последовательность «a a b c ---», результатом будет 3, поскольку есть три уникальных слова (a, b и c).

3 голосов
/ 09 января 2010

Вместо ArrayList , используйте HashSet (не отсортировано) или TreeSet (отсортировано), если вам не нужен счетчик частоты появления каждого слова, Hashtable (не отсортировано) или TreeMap (отсортировано), если вы это сделаете.

Если есть слова, которые вам не нужны, поместите их в HashSet и убедитесь, что в них нет слова, найденного вашим сканером, до помещения в вашу коллекцию. Если вам нужны только слова из словаря, поместите ваш словарь в HashSet и убедитесь, что в нем содержится слово, найденное вашим сканером, перед помещением в вашу коллекцию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...