2013-04-01 4 views
1

Я читаю файл, затем вызываю метод string [], который разбивает строку на отдельные слова, добавляет каждое слово в массив уникальных слов (без дубликатов слов) и возвращает массив уникальных слов.Как удалить повторяющиеся слова из массива в java

Я не могу понять, как печатать только каждое слово один раз, но вот что я до сих пор.

static public String[ ] sortUnique(String [ ] unique, int count) 
{ 
    String temp; 
    for(int i = 1; i < count; i++) { 
     temp = unique[i].replaceAll("([a-z]+)[,.?]*", "$1");; 
     int j; 
     for(j = i - 1; j>= 0 && (temp.compareToIgnoreCase(unique[j]) < 0);j--) { 
      unique[j+1] = unique[j]; 
     } 
     unique[j+1] = temp; 
    } 
    return unique; 
} 

И вот файл данных.

Is this a dagger which I see before me, 
    The handle toward my hand? Come, let me clutch thee. 
    I have thee not, and yet I see thee still. 
    Art thou not, fatal vision, sensible 
    To feeling as to sight? Or art thou but 
    A dagger of the mind, a false creation, 

Любая помощь была бы принята с благодарностью!

+2

Read http://stackoverflow.com/questions/357421/what-is-the-best-way-to-remove-duplicates-in- a-array-in-java –

+8

Поверните массив в набор, а затем преобразуйте его обратно в массив. –

+1

Идея: 1) сортировать массив 2) проверять каждый элемент на следующий элемент 3) если 'item [i] == item [i + 1]' удалить дубликат. –

ответ

4

Чтобы прочитать файл и удалить повторяющиеся слова:

import java.io.BufferedReader; 
import java.io.FileReader; 
import java.io.StreamTokenizer; 
import java.util.Set; 
import java.util.TreeSet; 

public class WordReader { 

    public static void main(String[] args) throws Exception { 
     BufferedReader br = 
     new BufferedReader(
      new FileReader("F:/docs/Notes/Notes.txt")); 
     Set<String> words = new TreeSet<>();    // {sorted,unique} 
     StreamTokenizer st = new StreamTokenizer(br); 
     while(st.nextToken() != StreamTokenizer.TT_EOF) { 
     if(st.ttype == StreamTokenizer.TT_WORD) { 
      words.add(st.sval); 
     } 
     } 
     System.out.println(words); 
     br.close(); 
    } 
} 
Смежные вопросы