经典的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]