Guava库学习:学习Collections(二)Lists

    链接地址:http://www.xx566.com/detail/138.html

    上一篇学习Collections(一)FluentIterable中, 我们学习和使用了FluentIterable类的链式调用,以使我们的代码更具可读性,在Java开发中,我们经常需要用到各种集合结构,如List、 Set、Map等,在Guava Collections中,Guava提供了一些用于处理这些集合实例的类,并使用静态工厂方法代替构造器来创建实例,如Lists、Sets、Maps 等,接下来我们会依次学习。

 

    Lists是Guava Collections中提供的用于处理List实例的实用类,翻开源代码,我们看到,其内部使用了静态工厂方法代替构造器,提供了许多用于List子类构造和操作的静态方法,我们简单的依次进行说明,如下:

 

newArrayList():构造一个可变的、空的ArrayList实例。

newArrayList(E... elements):构造一个可变的包含传入元素elements的ArrayList实例。

newArrayList(Iterable<? extends E> elements):构造一个可变的包含传入元素elements的ArrayList实例。

newArrayListWithCapacity( int initialArraySize):构造一个分配 指定空间大小的ArrayList实例。

newArrayListWithExpectedSize( int estimatedSize):构造一个期望长度为estimatedSize的ArrayList实例。

 

newLinkedList():构造一个空的LinkedList实例。

newLinkedList( Iterable<? extends E> elements):构造一个包含传入元素elements的LinkedList实例。

newCopyOnWriteArrayList():构造一个空的CopyOnWriteArrayList实例。

newCopyOnWriteArrayList( Iterable<? extends E> elements):构造一个包含传入元素elements的CopyOnWriteArrayList实例。

 

asList(@Nullable E first, E[] rest):返回一个不可变的List,其中包含指定的第一个元素和附加的元素数组组成,修改这个数组将反映到返回的List上。

asList( @Nullable E first, @Nullable E second, E[] rest):  返回一个不可变的List,其中包含指定的第一个元素、第二个元素和附加的元素数组组成,修改这个数组将反映到返回的List上。  

 

transform( List fromList, Function<? super F, ? extends T> function):根据传进来的function对fromList进行相应的处理,并将处理得到的结果存入到新的list对象中返回。

partition(List list, int size):根据size传入的List进行切割,切割成符合要求的小的List,并将这些小的List存入一个新的List对象中返回。

charactersOf(String string)、charactersOf(CharSequence sequence):将传进来的String或者CharSequence分割为单个的字符,并存入到一个ImmutableList对象中返回。 (ImmutableList:一个高性能、不可变的、随机访问列表的实现 )

reverse(List list):返回一个传入List内元素倒序后的List。

 

    接下来,我们通过下面的示例代码,来继续加深对Lists的理解,代码如下:

/**
 * Lists:处理List实例的实用类
 * User: Realfighter
 * Date: 2014/8/31
 * Time: 22:45
 */
public class ListsTest {
 
    @Test
    public void testLists() {
        /**
         * 一些构造List实例的方法很简单
         * 如:newArrayList(),newLinkedList()等
         * 这里不再赘述
         */
        String str = "i love u";//测试用
        String[] strs = {"i like u", "i miss u"};//测试用
        /**
         * asList:返回一个不可变的List
         * 其中包含指定的第一个元素和附加的元素数组组成
         * 修改这个数组将反映到返回的List上
         */
        List<String> list = Lists.asList(str, strs);
        System.out.println(list); //[i love u, i like u, i miss u]
        strs[1] = "i hate u";//对strs数组的修改会反映到List中
        System.out.println(list);//[i love u, i like u, i hate u]
        /**
         * transform:根据传进来的function对fromList进行相应的处理
         * 并将处理得到的结果存入到新的list对象中返回
         */
        List<String> newList = Lists.transform(list, new Function<String, String>() {
            @Override
            public String apply(String input) {
                //这里简单的对集合中的元素转换为大写
                return input.toUpperCase();
            }
        });
        System.out.println(newList);//[I LOVE U, I LIKE U, I HATE U]
        /**
         * partition:根据size传入的List进行切割,切割成符合要求的小的List
         * 并将这些小的List存入一个新的List对象中返回
         */
        List<List<String>> lists = Lists.partition(list, 2);
        System.out.println(lists);//[[i love u, i like u], [i hate u]]
        /**
         * charactersOf:将传进来的String或者CharSequence分割为单个的字符
         * 并存入到一个ImmutableList对象中返回
         * ImmutableList:一个高性能、不可变的、随机访问列表的实现
         */
        ImmutableList<Character> characters = Lists.charactersOf("realfighter");
        System.out.println(characters);//[r, e, a, l, f, i, g, h, t, e, r]
        /**
         * reverse:返回一个传入List内元素倒序后的List
         */
        List<String> reverse = Lists.reverse(list);
        System.out.println(reverse);//[i hate u, i like u, i love u]
    }
 
}


转载于:https://my.oschina.net/realfighter/blog/349901

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值