0

2 つの部分に分割された文字列を辞書の 0 番目と 1 番目の位置に格納したいと考えています。値が頻度であると仮定します:50 の場合、頻度は 0 位になり、50 は辞書の 1 位になります。次の C# コードは同じです。

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

Javaで同じ問題を解決したいのですが、どんな助けでも大歓迎です

4

3 に答える 3

0

少しクロージャー風のものが必要な場合は、おそらく次のような関数シグネチャを持つでしょう。

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-23T11:56:29.300 に答える