guava平时基本常用的基本操作整理

临时记录 同时被 2 个专栏收录
4 篇文章 0 订阅

目录

一、基本的数据结构直接的转换使用

1.List转换为String

2.String转换为List

3.Map转换为String

4.String转换为Map

5.多个字符进行分割

6.每隔多少字符进行分割

7.限制分割多少字后停止

二、对基本的数据结构进行的简单处理


主要针对平时开发中最常用的guava操作做基本的操作总结,并不完善,只整理平时使用较多的地方!

一、基本的数据结构直接的转换使用

1.List转换为String

    @Test
    public void testListToString() {
        List<String> names = Lists.newArrayList("John", "Jane", "Adam", null, "Tom");

        /*list转换为字符串, 跳过null*/
        String result2 = Joiner.on(",").skipNulls().join(names);
        /*list转换为字符串, 将null变成其他值*/
        String result3 = Joiner.on(",").useForNull("Zhangyanfeng").join(names);

        System.out.println("原列表内容为:" + names);
        System.out.println("操作(list转换为字符串, 跳过null)结果为:" + result2);
        System.out.println("操作(list转换为字符串, 将null变成其他值)结果为:" + result3);
    }

结果:

原列表内容为:[John, Jane, Adam, null, Tom]
操作(list转换为字符串, 跳过null)结果为:John,Jane,Adam,Tom
操作(list转换为字符串, 将null变成其他值)结果为:John,Jane,Adam,Zhangyanfeng,Tom

2.String转换为List

    @Test
    public void testStringToList(){
        String input = "apple,,banana,,,orange,null,";
        List<String> result1 = Splitter.on(",").trimResults().splitToList(input);
        List<String> result2 = Splitter.on(",").omitEmptyStrings().splitToList(input);

        System.out.println("原字符串内容为:" + input);
        System.out.println("将其转换为对应的列表(保留为空的内容)内容为:"+result1);
        System.out.println("将其转换为对应的列表(去除列表中的空内容)内容为:"+result2);
    }

结果:

原字符串内容为:apple,,banana,,,orange,null,
将其转换为对应的列表(保留为空的内容)内容为:[apple, , banana, , , orange, null, ]
将其转换为对应的列表(去除列表中的空内容)内容为:[apple, banana, orange, null]

3.Map转换为String

    @Test
    public void testMapToString(){
        Map<String, Integer> salary = Maps.newHashMap();
        salary.put("John", 1000);
        salary.put("Jane", 1500);

        /*Map转为字符串形式*/
        String result = Joiner.on(",").withKeyValueSeparator(" = ").join(salary);

        System.out.println("原字典内容为:"+salary);
        System.out.println("将其转换为字符串形式为:"+result);
    }

结果:

原字典内容为:{John=1000, Jane=1500}
将其转换为字符串形式为:John = 1000,Jane = 1500

4.String转换为Map

    @Test
    public void testStringToMap(){
        String input = "John=first,Adam=second";
        Map<String, String> result = Splitter.on(",").withKeyValueSeparator("=").split(input);

        System.out.println("原字符串内容为:"+input);
        System.out.println("将其转换为Map内容后为:"+result);
    }

结果:

原字符串内容为:John=first,Adam=second
将其转换为Map内容后为:{John=first, Adam=second}

5.多个字符进行分割

    @Test
    public void whenSplitStringOnMultipleSeparator_thenSplit() {
        String input = "apple.banana,,orange,,.";
        List<String> result = Splitter.onPattern("[.|,]").omitEmptyStrings().splitToList(input);
        System.out.println(result);
    }

结果:

[apple, banana, orange]

6.每隔多少字符进行分割

    @Test
    public void whenSplitStringOnSpecificLength_thenSplit() {
        String input = "Hello world";
        List<String> result = Splitter.fixedLength(3).splitToList(input);
        System.out.println(result);
    }

结果:

[Hel, lo , wor, ld]

7.限制分割多少字后停止

    @Test
    public void whenLimitSplitting_thenLimited() {
        String input = "a,b,c,d,e";
        List<String> result = Splitter.on(",").limit(3).splitToList(input);

        System.out.println(result);
    }

结果:

[a, b, c,d,e]

二、对基本的数据结构进行的简单处理

1.使用 Guava 去除 List 中的重复对象

针对基本的数据类型而不是对象而言,可以直接使用以下两种方法:

方法一:只能去除 List 列表中的重复对象,不去除含有null的元素   

Lists.newArrayList(Sets.newHashSet(list));

方法二:允许去除 List 列表中 重复对象以及null对象

ImmutableSet.copyOf(Iterables.filter(list,Predicates.not(Predicates.isNull()))).asList();

备注:如果List中储存的为对象,则建议重写对应的 equals 和 hashcode 方法, 如下面的例子。

重写User相关代码见:https://github.com/ZYFCodes/zyfboot-javabasic/blob/master/src/main/java/org/zyf/javabasic/common/User.java

基本测试用例如下:

public static void main(String[] args) {
        List<Long> activityUuidList = Lists.newArrayList();
        activityUuidList.add(Long.parseLong("234"));
        activityUuidList.add(Long.parseLong("234"));
        activityUuidList.add(Long.parseLong("345"));
        activityUuidList.add(Long.parseLong("234"));
        activityUuidList.add(Long.parseLong("123"));
        activityUuidList.add(Long.parseLong("654"));
        activityUuidList.add(null);
        activityUuidList.add(null);

        /*只能去除 List 列表中的重复对象,不去除含有null的元素*/
        List<Long> activityUuidList1 = Lists.newArrayList(Sets.newHashSet(activityUuidList));
        /*允许去除 List 列表中 重复对象以及null对象*/
        List<Long> activityUuidList2 = ImmutableSet.copyOf(Iterables.filter(activityUuidList, Predicates.not(Predicates.isNull()))).asList();

        System.out.println(activityUuidList);
        System.out.println(activityUuidList1);
        System.out.println(activityUuidList2);

        User zyf1 = new User("1", "ZYF1", "18");
        User zyf2 = new User("1", "ZYF1", "34");
        User zyf3 = new User("1", "ZYF3", "18");
        User zyf4 = new User("1", "ZYF1", "18");
        User zyf5 = new User("1", "ZYF1", "18");


        List<User> zyfList = Lists.newArrayList();
        zyfList.add(zyf1);
        zyfList.add(zyf2);
        zyfList.add(zyf3);
        zyfList.add(zyf4);
        zyfList.add(zyf5);
        zyfList.add(null);

        List<User> zyfList1 = Lists.newArrayList(Sets.newHashSet(zyfList));
        List<User> zyfList2 = ImmutableSet.copyOf(Iterables.filter(zyfList, Predicates.not(Predicates.isNull()))).asList();

        System.out.println(zyfList);
        System.out.println(zyfList1);
        System.out.println(zyfList2);
    }

对应结果如下:

[234, 234, 345, 234, 123, 654, null, null]
[null, 345, 234, 123, 654]
[234, 345, 123, 654]
[1 ZYF1 18, 1 ZYF1 34, 1 ZYF3 18, 1 ZYF1 18, 1 ZYF1 18, null]
[1 ZYF1 18, null, 1 ZYF3 18, 1 ZYF1 34]
[1 ZYF1 18, 1 ZYF1 34, 1 ZYF3 18]

备注:其他内容想到后续补充

  • 1
    点赞
  • 4
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 创作都市 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值