有一个list用下面这段代码输出为
for(int i=0;i<list.size();i++){ System.out.println(list.get(i)); }
{woodBatchID=1}
我是用如下这段代码进行取值,总感觉太麻烦,想大家讨论一下有没有更好的取值方法
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]