字符串集合转整型集合List<String> => List<Integer>

 /**
     * 普通循环转换
     */
    public static Consumer<List<String>> forConversion() {
        return list -> {
            List<Integer> integers = Lists.newArrayList();
            for (String str : list) {
                integers.add(Integer.valueOf(str));
            }
        };
    }

    /**
     * lambda mapToInt循环转换
     * @author syx
     */
    public static Consumer<List<String>> lambdaConversion() {
        return list -> Lists.newArrayList(list.stream()
                .mapToInt(Integer::valueOf)
                .iterator());
    }

    /**
     * lambda map循环转换
     * @author syx
     */
    public static Consumer<List<String>> lambdaConversion1() {
        return list -> list.stream().map(Integer::valueOf).collect(Collectors.toList());
    }

    /**
     * guava iterables transform循环转换
     *
     * @author syx
     */
    public static Consumer<List<String>> iterablesConversion() {
        return list ->
                Lists.newArrayList(Iterables.transform(list, new Function<String, Integer>() {
                    @NullableDecl
                    @Override
                    public Integer apply(@NullableDecl String input) {
                        return Integer.valueOf(input);
                    }
                }));
    }

    /**
     * iterators transform循环转换
     *
     * @author syx
     */
    public static Consumer<List<String>> iteratorsConversion() {
        return list -> Lists.newArrayList(Iterators.transform(list.iterator(), new Function<String, Integer>() {
            @NullableDecl
            @Override
            public Integer apply(@NullableDecl String input) {
                return Integer.valueOf(input);
            }
        }));
    }


    /**
     * transform 循环转换
     *
     * @author syx
     */
    public static Consumer<List<String>> transformConversion() {
        return list -> Lists.transform(list, e -> {return Integer.valueOf(e);});
    }

    public static void test(Consumer<List<String>> consumer, List<String> list, String msg) {
        long start = System.currentTimeMillis();
        consumer.accept(list);
        long end = System.currentTimeMillis();
        System.out.println(msg + " need time:" + (end - start));
    }

    @Test
    public void listStringToIntegerTest(){
        List<String> list = org.assertj.core.util.Lists.newArrayList();
        Integer len = 100;
        for (int i = 0; i < len; i++) {
            list.add(i + "");
        }

        test(forConversion(), list, "普通for循环 forConversion");
        test(lambdaConversion(), list, "Stream mapToInt lambdaConversion");
        test(lambdaConversion1(), list, "Stream map Conversion1");
        test(iterablesConversion(), list, "Guava iterables.transform Conversion");
        test(iteratorsConversion(), list, "Guava iterators.transform Conversion");
        test(transformConversion(), list, "Guava Lists.transform Conversion");
    }

结果如下:

普通for循环 forConversion need time:4
Stream mapToInt lambdaConversion need time:17
Stream map Conversion1 need time:5
Guava iterables.transform Conversion need time:5
Guava iterators.transform Conversion need time:0
Guava Lists.transform Conversion need time:1

 

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值