如何在java中存储字典中的字符串部分

如何在java中存储字典中的字符串部分,java,string,dictionary,Java,String,Dictionary,我想将拆分为两部分的字符串存储到字典的第0位和第1位。 假设值为frequency:50,则frequency将位于字典的第0位,50将位于字典的第一位 下面是相同的C#代码 data_dictionary = data.Split(',') .ToDictionary(item => item.Split(':')[0], item => item.Split(':')[1]); 我想要用java实现同样的解决方案,任何帮助都将不胜感激对不起,如果没有闭包,java无法达到您

我想将拆分为两部分的字符串存储到字典的第0位和第1位。 假设值为frequency:50,则frequency将位于字典的第0位,50将位于字典的第一位 下面是相同的C#代码

data_dictionary = data.Split(',')
  .ToDictionary(item => item.Split(':')[0], item => item.Split(':')[1]);

我想要用java实现同样的解决方案,任何帮助都将不胜感激

对不起,如果没有闭包,java无法达到您C#代码的优雅程度。您可能会发现一些使用匿名类来近似这一点的方法,但这并不值得。因此,只需编写一个常规循环,将
的内容放入
HashMap
。您可以使用
string#split(regex)

以相同的方式拆分字符串,如果您想要一个稍微封闭的东西,那么它可能会有一个函数签名,如:

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]);
        }});
}
接口键对函数{
配对getKeyValuePair(T项);
}
公共静态映射toMap(Iterable项,KeyPairFunctor函子){
Map m=新的HashMap();
对于(T项:项){
对e=functor.getKeyValuePair(项);
m、 put(e.getKey(),e.getValue());
}
返回m;
}
公共静态无效测试(){
toMap(Arrays.asList(新字符串[]{“A:B”}),新的KeyPairFunctor(){
@凌驾
公共对getKeyValuePair(字符串项){
字符串[]ss=item.split(“:”);
返回新对(ss[0],ss[1]);
}});
}

Pair
的实现留给读者作为练习,我相信您可以看到如何将
拆分列表放在第一个参数中。

我无法解决这个问题,我只是想知道我可以使用arraylist并将子字符串的内容添加到该arraylist中吗?或者你可以提供任何示例,因为我发现很难理解它
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]);
        }});
}