如何从列表中获取以指定字母开头的所有单词

时间:2015-11-03 10:09:11

标签: java input applet

我试图显示以用户输入指定的字母开头的单词列表。

因此,例如,如果我在列表中添加三个单词,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 

3 个答案:

答案 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参数的字符串开头的列表项。

输出结果为:

  

[猫,玉米]