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 去遍历?
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 去遍历?
如果你用上了 Java8:
public static void main(String[] args) throws Exception {
String[] cols = "name,age,gender,phone".split(",", -1);
String[] message = "abc\tdef\t123\t456".split("\\t", -1);
Map<String, String> map
= IntStream.range(0, cols.length)
.boxed()
.collect(Collectors.toMap(i -> cols[i], i -> message[i]));
map.forEach((k, v) -> System.out.println(k + " -> " + v));
}
运行结果:
为什么会有这么奇怪的要求,不用 for
。遍历肯定是个循环操作,循环就 for
和两种 while
,不用 for
那就用 while
呗……
另外,你可以用 stream 对遍历处理的封装,如果不幸没用上 Java8,那就自己写个封装再调用……
首先声明这个答案一下纯属娱乐,从实用角度来说毫无益处。
但是确实完全满足了生成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();
}
};
}
};
}
};
}
};
}
}
8 回答6.4k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
2 回答3.2k 阅读
2 回答3.9k 阅读
1 回答2.2k 阅读✓ 已解决
3 回答1.6k 阅读✓ 已解决
https://stackoverflow.com/que...