如何从具有元音作为Java中第一个字符的链接列表中删除单词

时间:2016-02-14 00:18:50

标签: java linked-list

这是我第一次使用链表。我理解如何正确地迭代它,以及如何设置它。我遇到的问题是我不确定如何正确地做到这一点,检查一个单词的第一个字母是否是一个元音,如果是这样,从列表中删除该单词。到目前为止,这是我的代码:

 import java.util.*;
 public class LinkedListExample 
 {
 public static void main(String args[]) 
 {

     //Linked List Declaration 
     LinkedList<String> linkedlist = new LinkedList<String>();

     Scanner sc=new Scanner(System.in); 

     for(int i = 0; i<4; i++)//filling the list
         {
          System.out.println("What is your word?");
          String yourValue = sc.next();
          linkedlist.add(yourValue);
          sc.nextLine();
         }

      Iterator<String> i = linkedlist.iterator();
      while (i.hasNext()) 
     {
          String vowels = "aeiouy";
         //Need to remove the words with the vowels as the first letter here
     }

    while(i.hasNext())//printing out new list
    {
        System.out.println(i.next());
    }
 }
}

我知道我必须使用for循环来完成这项工作。我的第一个想法是使用for循环来检查我的字符串元音,但我不确定如何使用链表进行工作。我也不确定如何在使用迭代器迭代链表时删除一些东西。

2 个答案:

答案 0 :(得分:0)

while (i.hasNext()) 
     {
          String vowels = "aeiouy";
         //Need to remove the words with the vowels as the first letter here
           boolean found = false;
           String str = i.next();

           for(int counter = 0; counter < vowels.length(); counter++)
             if(vowels.charAt(counter) == str.charAt(0)) {
                found = true;
                break;
             }
           if(found) { /* do stuff here */}
     }

修改

之后,在打印新值之前,您必须通过执行以下操作再次重新初始化迭代器:i = linkedlist.iterator();。注意这一点。 :)

答案 1 :(得分:0)

    List<String> filteredList = list.stream().filter(n->n.startsWith("a")||n.startsWith("e")||n.startsWith("i")||n.startsWith("o")||n.startsWith("u")).collect(Collectors.toList());
    List<String> unique = new ArrayList<String>(list);
unique.removeAll(filteredList);
    unique.forEach(System.out::println);

这里创建了一个数组列表,其中包含以a,e,i,o,u开头的单词,然后我创建了一个包含所有元素的数组列表,然后我删除了筛选列表中存在的元素唯一列表是您需要的名单。我希望我的帖子会有所帮助。