我想将字符串拆分为两部分存储到字典的第 0 和第 1 位置。假设值为频率:50,那么频率将在第 0 位,50 将在字典中的第 1 位以下是相同的 C# 代码
data_dictionary = data.Split(',')
.ToDictionary(item => item.Split(':')[0], item => item.Split(':')[1]);
我想要java中相同的解决方案,任何帮助将不胜感激
我想将字符串拆分为两部分存储到字典的第 0 和第 1 位置。假设值为频率:50,那么频率将在第 0 位,50 将在字典中的第 1 位以下是相同的 C# 代码
data_dictionary = data.Split(',')
.ToDictionary(item => item.Split(':')[0], item => item.Split(':')[1]);
我想要java中相同的解决方案,任何帮助将不胜感激
如果你想要一些闭包式的东西,那么它可能会有一个函数签名,如:
interface KeyPairFunctor<T, K, V> {
Pair<K, V> getKeyValuePair(T item);
}
public static <T, K, V> Map<K, V> toMap(Iterable<T> items, KeyPairFunctor<T, K, V> functor) {
Map<K, V> m = new HashMap<K,V>();
for (T item : items) {
Pair<K, V> e = functor.getKeyValuePair(item);
m.put(e.getKey(), e.getValue());
}
return m;
}
public static void test() {
toMap(Arrays.asList(new String[] { "A:B" }), new KeyPairFunctor<String, String, String>() {
@Override
public Pair<String, String> getKeyValuePair(String item) {
String[] ss = item.split(":");
return new Pair(ss[0], ss[1]);
}});
}
的实现Pair
留给读者作为练习,我相信您可以看到如何将,
拆分列表放在第一个参数中。
int delim = data.indexOf(':');
System.out.println( data.substring(0,delim) ); //frequency
System.out.println( data.substring(delim+1) ); //50
抱歉,没有闭包,Java 无法接近 C# 代码的优雅。您可能会发现一些使用匿名类来近似这一点的东西,但这并不值得。因此,只需写出一个常规循环,将其put
放入HashMap<String, String>
. 您可以使用相同的方式拆分字符串,使用String#split(regex)
.