这是我第一次使用链接表。我了解如何正确迭代它,以及如何设置一个。我遇到的问题是我不确定如何正确地进行梳理,检查单词的第一个字母是否是元音,如果是这样,请从列表中删除该单词。这是我到目前为止的代码:
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 循环来检查我的字符串元音,但我不确定如何使用链表来使其工作。我也不确定在使用迭代器遍历链表时如何在此处删除某些内容。
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 开头的单词,然后我创建了一个包含所有元素的数组列表,然后我删除了过滤列表中存在的元素唯一列表是您需要的列表。 我希望我的帖子会有所帮助。
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();
.注意这一点。:)