【问题标题】:How to store the parts of the string in dictionary in java如何在java中将字符串的部分存储在字典中
【发布时间】:2013-05-23 11:39:24
【问题描述】:

我想将字符串拆分成两部分存储到字典的第 0 和第 1 位置。 假设值为频率:50,那么频率将在第 0 位,50 将在字典中的第 1 位 以下是相同的 C# 代码

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

我想要java中相同的解决方案,任何帮助将不胜感激

【问题讨论】:

    标签: java string dictionary


    【解决方案1】:

    抱歉,没有闭包,Java 无法达到 C# 代码的优雅。你可能找到一些使用匿名类来近似这个的东西,但这并不值得。所以只需写出一个常规循环,将puts 填充到HashMap<String, String> 中。您可以使用 String#split(regex) 以相同的方式拆分字符串。

    【讨论】:

    • 我无法解决这个问题,只是想知道我是否可以使用 arraylist 并将子字符串的内容添加到该 arraylist 中,或者您能否提供任何示例,因为我可以觉得很难理解
    【解决方案2】:
    int delim = data.indexOf(':');
    
    System.out.println( data.substring(0,delim) ); //frequency
    System.out.println( data.substring(delim+1) );   //50
    

    【讨论】:

      【解决方案3】:

      如果你想要一些闭包式的东西,那么它可能会有一个函数签名,比如:

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

      【讨论】:

        猜你喜欢
        • 2013-05-23
        • 1970-01-01
        • 2020-03-07
        • 1970-01-01
        • 2021-12-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多