Guava笔记Lists

Guava笔记Lists

省掉泛型的写法
  • static <E> ArrayList<E> newArrayList()
    Creates a mutable, empty ArrayList instance (for Java 6 and earlier).
    在jdk7中已经进步了一点,不用写具体的泛型之类。

    List<String> list = Lists.newArrayList();
返回String字符串的list
  • static ImmutableList<Character> charactersOf(String string)
    Returns a view of the specified string as an immutable list of Character values.
返回等分List
  • static <T> List<List<T>> partition(List<T> list, int size)
    Returns consecutive sublists of a list, each of the same size (the final list may be smaller). 返回一个等分数组,最后一个可能比较少
反序List
  • static List reverse(List list)
    Returns a reversed view of the specified list.
    这个虽然是view,但是却可以返回可操作的list。支持被反序list的操作,比如add,并且如果对这个view做了修改,也会影响到原来的list,并以反序的方式增加进去
重点:transform
  • static <F,T> List<T> transform(List<F> fromList, Function<? super F,? extends T> function)
    Returns a list that applies function to each element of fromList.
    这个只看api的话,有点难看明白,还是看一个具体的例子吧。

    Function<String, Integer> func = new Function<String, Integer>() {
            @Override
            public Integer apply(String str) {
                return str.length();
            }
        };
    List<String> strList = Arrays.asList(new String[]{"你", "我", "他"});
    List<Integer> list = Lists.transform(strList, func);
    for (int i : list ) {
        System.out.println(i);
    }

    简单来说,就是写一个匿名的function实现,实现每个元素从F到T的类型转换。之后就可以应用了。还是比较喜欢这个function的。

Note:基于function的转换是lazy的,并且返回的是一个view。如果修改了src的list或者view的list都会反馈到src List。目前的情况是,我使用Lists.transform改变了src list中的element的属性,然后返回到具体view上就是修改了两次的结果。这个也可以期待为正常的结果,但是有时候也出现修改三次的结果。两次的结果可以理解,但是三次就不能很理解了。希望有知道的,可以告诉我具体的执行过程。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值