0
interface TypeConverter<T, E> {
     T convert(E e);
}
class CollectionUtil() {
     public static <E> List<T> convertToList(List<E> fromList, TypeConverter<T, E> conv) {
     {
            if(fromList== null) return null;
            List<T> newList = new ArrayList<T>(fromList.size())  
            for(E e : fromList) 
            {
                newList.add(conv.convert(e));
            }
            return newList;
     } 
}

上記のコードは、String、IntegerのTypeConverterインターフェイスを実装することにより、文字列のリストから整数のリストに変換する方法を説明しています。設定するリストなどのAPIにコレクション変換ユーティリティメソッドがすでに存在しますか?

4

2 に答える 2

6

グアバ:

List<String> strings = Arrays.asList("1", "2", "3");
List<Integer> integers =
        Lists.transform(strings, new Function<String, Integer>() {
            @Override
            public Integer apply(String input) {
                return Integer.parseInt(input);
            }
        });

Maven

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>13.0</version>
</dependency>

コレクション15パッケージ:

final List<Integer> integers =
        ListUtils.transformedList(strings, new Transformer<String, Integer>() {
            @Override
            public Integer transform(String s) {
                return Integer.parseInt(s);
            }
        });

Maven

<dependency>
    <groupId>net.sourceforge.collections</groupId>
    <artifactId>collections-generic</artifactId>
    <version>4.01</version>
</dependency>

関数型Javaの場合

List<Integer> integers = List.list("1", "2", "3").map(new F<String, Integer>() {
    @Override
    public Integer f(String s) {
        return Integer.parseInt(s);
    }
});

Maven

<dependency>
    <groupId>org.functionaljava</groupId>
    <artifactId>functionaljava</artifactId>
    <version>3.1</version>
</dependency>

このライブラリは異なるコレクションのセットを使用することに注意してください。

... Scalaのボーナス:

Seq("1", "2", "3") map {_.toInt}
于 2012-10-17T16:53:41.857 に答える
1

試す:

于 2012-10-17T16:50:49.077 に答える