2014-02-06 5 views
0

Мой код принимает вход String, разделяет их и находит в них те, у которых есть определенная буква, а затем печатает их. Теперь я хочу, чтобы одно и то же слово печаталось только один раз. Например, если вход был «она выглядит красиво, она добр». то на выходе будет «она \ п хорошая» Это мой текущий код:Как проверить одно и то же слово в строке?

Scanner kybd = new Scanner(System.in); 
String s = kybd.nextLine(); 
String[] arr = s.split(" ");  
for (String ss : arr) { 
    String []ary = {ss}; 
     for(int i = 0; i < ary.length; i++){ 
      int numindex = ss.indexOf("e"); 
      int numindex2 = ss.indexOf("E"); 
      if (numindex != -1){ 
       System.out.println(ary[i]); 
      } 
      else if(numindex2 != -1){ 
       System.out.println(ary[i]); 
      } 
     } 
    } 

Любые предложения о том, как сделать это будет оценено.

ответ

4

Добавьте свои слова к HashSet<String>.

Затем пройдите через этот HashSet и распечатайте слова.
Даже если есть дубликаты (пока вы их извлекаете),
они будут распечатаны один раз.

HashSet избавится от дубликатов для вас
(он будет делать это, пока вы вставляете их в HashSet).

Смотрите здесь для подробностей: HashSet

+0

Для поддержания может быть использовано слово в предложении, ORDER, ArrayList (для хранения) и HashSet (для проверки предыдущего существования); если нет проблем с эффективностью (что, вероятно, не для небольших списков, как здесь), то List.contains будет достаточным для теста существования (и Set может быть пропущен) .. и будет намного проще, чем ручной массив. – user2864740

+0

Нет, для поддержания порядка я бы использовал TreeSet. По крайней мере, в этом сценарии. http://docs.oracle.com/javase/7/docs/api/java/util/TreeSet.html –

+0

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

Смежные вопросы