首页 > 其他分享 >guava使用

guava使用

时间:2022-10-03 20:22:24浏览次数:38  
标签:list System add 使用 println import guava out

  • 引入依赖
<dependency>
  <groupId>com.google.guava</groupId>
  <artifactId>guava</artifactId>
  <version>29.0-jre</version>
</dependency>
  • 代码案例
import com.google.common.base.CaseFormat;
import com.google.common.base.Joiner;
import com.google.common.base.Preconditions;
import com.google.common.base.Splitter;
import com.google.common.collect.*;
import com.google.common.primitives.Floats;
import com.google.common.primitives.Ints;
import com.google.common.primitives.Longs;
import org.apache.commons.lang3.StringUtils;
import org.junit.Test;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class GuavaTest {

    @Test
    public void test8() {
        String param = null;
//        if (param == null) {
//            throw new RuntimeException("参数不能为空");
//        }
//        Preconditions.checkNotNull(param,"参数不能为空");
        // 第一个expression:布尔值的表达式,true:校验通过,不抛异常;false:抛异常
        Preconditions.checkArgument(param != null,"参数不能为空");
    }

    /**
     * 不可变集合
     */
    @Test
    public void test7() {
        List<String> list = new ArrayList<>();
        list.add("aa");
        // 把list放到了缓存里面
        // 怎么强制约束别人不能改我的list?
        ImmutableList<Object> immutableList = ImmutableList.builder().add("aa").build();
        // 把immutableList放到缓存中,如果执行add操作会报错:UnsupportedOperationException
//        immutableList.add("bbb");

        List<String> jdkUnmodifiableList = Collections.unmodifiableList(list);
        // 如果执行add操作会报错:UnsupportedOperationException
//        jdkUnmodifiableList.add("ccc");
        list.add("ccc");
        System.out.println(jdkUnmodifiableList);
    }

    /**
     * HashMultimap用来替代jdk原生的Map<String,Collection<String>> map;
     */
    @Test
    public void test6() {
        Multimap<String,String> multimap = HashMultimap.create();
        multimap.put("a","1");
        multimap.put("a","2");
        multimap.put("a","3");
        Collection<String> aValues = multimap.get("a");
        System.out.println(aValues);

        // 是否包含key=a,value=1的entry
        System.out.println(multimap.containsEntry("a", "4"));
        // 转化成jdk原生api实现的数据结构
        Map<String, Collection<String>> jdkMap = multimap.asMap();
        System.out.println(jdkMap);
    }

    /**
     * Multiset
     * list:元素可重复的有序集合
     * set:元素不可重复的无序集合
     */
    @Test
    public void test5() {
        Multiset<String> multiset =  HashMultiset.create();
        multiset.add("a");
        multiset.add("b");
        multiset.add("c");
        multiset.add("a");
        System.out.println(multiset);
        Set<Multiset.Entry<String>> entries = multiset.entrySet();
        System.out.println(entries);// [a x 2, b, c]
        for (Multiset.Entry<String> entry : entries) {
            System.out.println("元素:"+entry.getElement()+",个数:"+entry.getCount());
        }

        Set<String> elementSet = multiset.elementSet();
        System.out.println(elementSet);// [a, b, c]
        for (String ele : elementSet) {
            System.out.println("集合里面的元素:"+ele);
        }
    }

    /**
     * Ints
     * Longs
     * Floats
     * ...
     */
    @Test
    public void test4() {
        List<Integer> integers = Ints.asList(1, 2, 3);
        System.out.println(integers);
    }

    /**
     * Lists的用法,另有Sets、Maps
     */
    @Test
    public void test3() {
        List<String> list = new ArrayList<>();
        list.add("a");
        list.add("b");
        list.add("c");
        // 提供集合的快速创建方式
        ArrayList<String> list2 = Lists.newArrayList("a", "b", "c");
        /*
        要求你传ids,一次最多传2个
         */
        // 把list2分成小的集合,小的集合大小是size
//        list2.subList() // 太麻烦
        List<List<String>> partition = Lists.partition(list2, 2);
        System.out.println(partition);
        for (List<String> ids : partition) {
//            api(ids);
        }
    }

    /**
     * 下划线和驼峰互转
     * student_name
     * studentName
     */
    @Test
    public void test2() {
        String str = "student_name";
        // 下划线转驼峰 CAMEL:骆驼
        // studentName
        System.out.println(CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, str));
        // StudentName
        System.out.println(CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.UPPER_CAMEL, str));

        // 驼峰转下划线
        str = "studentName";
        // 结果: student_name
        System.out.println(CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, str));
    }

    /**
     * Joiner:把集合(或数组或可变参数)通过指定的分隔符连接成字符串
     * Splitter:通过指定的分隔符把字符串转为集合
     */
    @Test
    public void test1() {
        List<String> list = new ArrayList<>();
        list.add("a");
        list.add("b");
        list.add("c");
        list.add(null);

        Joiner joiner = Joiner.on(",")
                // 忽略null
//                .skipNulls()
                .useForNull("这是null的替代物")
                ;
        System.out.println(joiner.join(list));// a,b,c
        // jdk8中实现这类需求也比较方便
        System.out.println(list.stream().filter(StringUtils::isNotBlank)
                .collect(Collectors.joining(",")));

        String str = "a,b,\"\",,  c  ,";
        // on:指定字符串的分隔符
        Splitter splitter = Splitter.on(",")
                // 过滤掉空白的字符串(不包括"")
                .omitEmptyStrings()
                // 去除每个元素的前后空格
                .trimResults()
                ;
        Iterable<String> iterable = splitter.split(str);
        System.out.println(iterable);
        List<String> splitToList = splitter.splitToList(str);
        System.out.println(splitToList);

    }

}

标签:list,System,add,使用,println,import,guava,out
From: https://www.cnblogs.com/chniny/p/16751149.html

相关文章

  • python中getter和setter方法的使用
    classUserInfo(object):@propertydefusername(self):#这里返回的self.名字不能和函数名同名[email protected](self,usern......
  • 002-Redis的 String 使用
    Redis命令十分丰富,包括的命令组有Cluster、Connection、Geo、Hashes、HyperLogLog、Keys、Lists、Pub/Sub、Scripting、Server、Sets、SortedSets、Strings、Transactions......
  • Ipyton使用笔记[1003]
    第一次使用:字符串操作   In[1]:lst=[11,12,13,7,1,3,2,2,5,6,10,7]In[2]:lstOut[2]:[11,12,13,7,1,3,2,2,5,6,10,7]In[3]:lst1=[11,12,13,......
  • jenkins 使用所遇报错
    >git--version#timeout=10>git--version#'gitversion2.25.1'usingGIT_ASKPASStosetcredentials>gitfetch--tags--force--progress--https://......
  • commons-io使用
    引入依赖<dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.4</version></dependency>案例1importorg.apache......
  • 基于SqlSugar的开发框架循序渐进介绍(14)-- 基于Vue3+TypeScript的全局对象的注入和使用
    刚完成一些前端项目的开发,腾出精力来总结一些前端开发的技术点,以及继续完善基于SqlSugar的开发框架循序渐进介绍的系列文章,本篇随笔主要介绍一下基于Vue3+TypeScript的全局......
  • commons-collections4使用
    引入依赖<dependency><groupId>org.apache.commons</groupId><artifactId>commons-collections4</artifactId><version>4.4</version></dependency>案例1......
  • commons-lang3使用
    引入依赖<dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.9</version></dependency>案例1import......
  • git rebase 使用
    1.GITREBASE使用说明gitrebase作用将提交进行合并有些时候,我们在开发的时候,可能在本地做了几次提交,但是这个提交是解决一个问题的,这个时候如果我们向远程推送的时候,那么......
  • TypeScript 类型增强declare的使用
    类型增强declare的使用1.如果一个有一个全局变量golabaol。在index.html中。2.我们在xx.vue中使用golabaol。这个时候会报错找不到名称“golabaol解决办法:......