String[] cols = "name,age,gender,phone".split(",", -1);
String[] message = "abc\tdef\t123\t456".split("\\t", -1);
// 这两个字符串组数一一对应,然后组成map
key—value
name:abc,age:def,gender:123,phone:456
有没有工具类,不用for 去遍历?
4 回答

江户川乱折腾
TA贡献1851条经验 获得超5个赞
为什么会有这么奇怪的要求,不用 for
。遍历肯定是个循环操作,循环就 for
和两种 while
,不用 for
那就用 while
呗……
另外,你可以用 stream 对遍历处理的封装,如果不幸没用上 Java8,那就自己写个封装再调用……

墨色风雨
TA贡献1853条经验 获得超6个赞
首先声明这个答案一下纯属娱乐,从实用角度来说毫无益处。
但是确实完全满足了生成map的时候没有for循环。
至于使用map的时候嘛……
public class MapTest {
@Test
public void testMakeMap() throws Exception {
String[] cols = "name,age,gender,phone".split(",", -1);
String[] message = "abc\tdef\t123\t456".split("\\t", -1);
Map<String, String> map = toMap(cols, message);
assertThat(map.get("name"), is("abc"));
assertThat(map.get("phone"), is("456"));
assertThat(map.get("age"), is("def"));
assertThat(map.get("gender"), is("123"));
}
private Map<String,String> toMap(String[] keys, String[] values) {
return new AbstractMap<String, String>(){
public Set<Entry<String, String>> entrySet() {
return new AbstractSet<Entry<String, String>>() {
public int size() {
return keys.length;
}
public Iterator<Entry<String, String>> iterator() {
return new Iterator<Entry<String, String>>(){
int i = 0;
public boolean hasNext() {
return i < keys.length;
}
public Entry<String, String> next() {
int current = i++;
return new Entry<String, String>() {
public String getKey() {
return keys[current];
}
public String getValue() {
return values[current];
}
public String setValue(String s) {
throw new UnsupportedOperationException();
}
};
}
};
}
};
}
};
}
}
添加回答
举报
0/150
提交
取消