我试图显示以用户输入指定的字母开头的单词列表。
因此,例如,如果我在列表中添加三个单词,cat,corn和dog,并且用户输入字母c,则Java applet上的输出应为cat,corn。
但是,我不知道如何解决这个问题。
public void actionPerformed(ActionEvent e){
if (e.getSource() == b1 ){
x = textf.getText();
wordList.add(x);
textf.setText(null);
}
if (e.getSource() == b2 ){
}
}
b1
正在将所有用户输入添加到一个秘密存储的列表中,我现在想要按下另一个按钮来显示用户以指定字母开头的单词。
textf = my text field
wordList = my list I created
x = string I previously defined
答案 0 :(得分:0)
你可以遍历所有可能的索引,检查该索引处的元素是否以字母开头,如果是,则打印出来。
ALTERNATIVE(可能更好)代码(我打算将其放在后面,但是因为它更好,所以它应该是第一个。取自@ larsmans的回答here。
//given wordList as the word list
//given startChar as the character to search for in the form of a *String* not char
for (String element : wordList){
if (element.startsWith(startChar)){
System.out.println(element);
}
}
免责声明:此代码未经测试,我对ArrayList
没有多少经验,Java对我来说更像是一种四元编程语言。希望它有效:)
//given same variables as before
for (int i = 0; i < wordList.size(); i++){
String element = wordList.get(i);
//you could remove the temporary variable and replace element with
// wordList.get(i)
if (element.startsWith(startChar){
System.out.println(element);
}
}
答案 1 :(得分:0)
你可以尝试这样的事情 -
public static void main(String[] args) {
String prefix = "a";
List<String> l = new ArrayList<String>();
List<String> result = new ArrayList<String>();
l.add("aah");
l.add("abh");
l.add("bah");
for(String s: l) {
if(s.startsWith(prefix)) {
result.add(s);
}
}
System.out.println(result);
}
结果是 -
[aah, abh]
答案 2 :(得分:0)
如果您可以使用Java 8,那么您可以内置功能来过滤列表:
public static void main(String[] args) throws Exception {
final List<String> list = new ArrayList<>();
list.add("cat");
list.add("corn");
list.add("dog");
System.out.println(filter(list, "c"));
}
private static List<String> filter(final Collection<String> source, final String prefix) {
return source.stream().filter(item -> item.startsWith(prefix)).collect(Collectors.toList());
}
这使用filter
方法过滤每个以prefix
参数的字符串开头的列表项。
输出结果为:
[猫,玉米]