0

说我有一个字符串

String s = bob

和 ArrayList

["alex [available]", "bob [away]", "craig [busy]", "david [gone fishing]"]

我将如何搜索列表以获取 [1] 处的元素?

4

5 回答 5

6
String strToSearch = yourString + " [";//"bob ["

for (int i = 0; i < list.size(); i++){
    if (list.get(i).startsWith(strToSearch)){
         neededIndex = i;
         break;
    }
}
于 2012-12-03T10:47:38.267 回答
2

您必须迭代列表并对String.contains("bob")每个项目执行一次。

for (String item : listOfItems) {
   if (item.contains("bob") {
      return item;
   }
}

也许您应该将搜索词扩展为,bob [因为“bob”可能包含在另一个名称中。

于 2012-12-03T10:47:52.387 回答
1

您可能应该使用地图而不是列表。在这种情况下,您需要使用循环。

List<String> nameStatusList = ...
String s = "bob";

FOUND: {
    for(String ns: nameStatusList)
       if(ns.startsWith(s + " [")) {
           System.out.println(ns);
           break FOUND;
       }
    System.out.println("Couldn't find " + s);
}
于 2012-12-03T10:49:29.723 回答
0
for (String str: list) {
   if (str.contains(s)) {
      return str;
   }
}

换成以防万一str.contains(s)str.matches("^"+s+" [")

于 2012-12-03T10:50:16.587 回答
0

像这样的东西:

String string = "bob";

private List <String> list = new ArrayList<String>(){{
    add("alex [available]");
    add("bob [away]");
    add("craig [busy]");
    add("david [gone fishing]");
}};


public void method(){
    String answer;

    for (String s : list){
        if (s.contains(string)){
            answer = s;
            break;
        }
    }
}
于 2012-12-03T10:57:21.550 回答