经典的List遍历问题

经典的List遍历问题

问题描述:

有一个list用下面这段代码输出为

 

      for(int i=0;i<list.size();i++){
            System.out.println(list.get(i));
        }

 {woodBatchID=1}

{woodBatchID=7}


要怎么取出这里的1,7呢?用什么方法最好


我是用如下这段代码进行取值,总感觉太麻烦,想大家讨论一下有没有更好的取值方法

 

      for(int i=0;i<list.size();i++){
Map map=(Map)list.get(i);
System.out.println(map.get("woodBatchID"));
}

问题补充
大家讨论一下呀!虽然简单但也对我们这些新手很有帮助啊!
问题补充
还是没人说话,伤心……

[code="java"]Pattern pattern = Pattern.compile("^\{[a-zA-Z]*?=(\d)+\}$");[/code]
[b]
试试这样,中间只要是字母就可以![/b]

你的List中放的是什么内容?

Map中怎么会有重复的键值对啊?怎么能用Map啊

String str=(String)list.get(i);
System.out.println(str.substring(str.indexOf("=")+1));

你就直接list.get(1)和list.get(7)不就行了,干嘛要循环啊

[code="java"]import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class T {
public static void main(String args[]) {

    List<String> list = new ArrayList<String>();
    list.add("{woodBatchID=1}");
    list.add("{woodBatchID=7}");

    for (String each : list) {
        System.out.println(T.getNumber(each));
    }
}

public static String getNumber(String str) {

    Pattern pattern = Pattern.compile("^\\{woodBatchID=(\\d)+\\}$");

    Matcher m = pattern.matcher(str);
    if (m.find()) {
        return m.group(1);
    }
    return "null";
}

}[/code]

我是告诉你直接用list.get取出对象来,没必要用循环来处理,浪费资源。除非你就想print什么都不做

[b]woodBatchID 是都是有字母组成的?还是包括数字、标点?[/b]