![](/img/trans.png)
[英]How to store the parts of Strings in dictionary after splitting it in java
[英]How to store the parts of the string in dictionary in java
我想将拆分为两部分的字符串存储在字典的第0和第1位。 假设值是frequency:50,那么频率在字典中将位于第0位,而50将位于第1位,以下是相同的C#代码
data_dictionary = data.Split(',')
.ToDictionary(item => item.Split(':')[0], item => item.Split(':')[1]);
我想要在java中的解决方案,任何帮助将不胜感激
String delimiter = ",";
temp = str.split(delimiter); //str being your "long" string
for ( int i =0; i < temp.length ; i++ ){
delimiter = ":";
temp2 = temp[i].split(delimiter);
for(int k =0; k < temp2.length ; k++)
System.out.println(temp2[k]); //here your code
}
将打印:
frequency
50
而且,无论您想使用它们做什么,都将把子字符串存储在:
temp2[0] = frequency //just for this example
temp2[1] = 50
您必须在我编写的代码的最后一行进行处理,因为temp2
的值将替换为每个以','
分隔的子字符串。
抱歉,没有闭包,Java无法达到C#代码的优雅水平。 您可能会发现使用匿名类对此进行近似的东西,但这并不是真正值得的。 因此,只需编写一个常规循环, put
内容放入HashMap<String, String>
。 您可以使用String#split(regex)
以相同的方式拆分字符串。
int delim = data.indexOf(':');
System.out.println( data.substring(0,delim) ); //frequency
System.out.println( data.substring(delim+1) ); //50
如果您想要一些闭包式的东西,那么它可能具有如下功能签名:
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
被作为练习留给读者,我敢肯定,你可以看到你如何把你的,
在第一个参数分割列表。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.