今天听同事说到google的Java工具库Guava非常好用,有很多操作list和map的快捷方法。所以就来学习记录一下。
静态初始化方法,创建list时指定初始值
List<String> list1 = Lists.newArrayList("1", "2", "3");
List<String> list2 = Lists.newArrayList(list1);
将list字符串集合,以,形式转为字符串
List<String> list =new ArrayList<String>();
list.add("xx");
list.add("zz");
list.add("dd");
String joiner = Joiner.on(",").join(list);
跳过null值连接
list.add(null);
list.add("小小");
String str3=Joiner.on(",").skipNulls().join(list);
System.out.println(str3);
String str4=Joiner.on(",").useForNull("空").join(list);
System.out.println(str4);
Map的键值对打印出来
Map<String, String> map = new HashMap<>();
map.put("key1", "value1");
map.put("key2", "value2");
map.put("key3", "value3");
Joiner.MapJoiner mapJoiner = Joiner.on(",").withKeyValueSeparator("=");
System.out.println(mapJoiner.join(map));
1、拆分字符串为List集合
String str="小小,妈妈,爸爸,爷爷,奶奶";
Splitter splitter =Splitter.on(",");
List<String> list=splitter.splitToList(str);
System.out.println(list);
2、忽略空字符
String str1="a,b,c,d,,f,g";
List<String> list1=Splitter.on(",").omitEmptyStrings().splitToList(str1);
System.out.println(list1);
3、忽略空字符且去除字符串前后空格
String str2="a,b,c,d,,f, g ";
List<String> list2=Splitter.on(",").omitEmptyStrings().trimResults().splitToList(str2);
System.out.println(list2);
//1、补右全(Strings.padEnd方法)
String a="12345";
String b=Strings.padEnd(a, 10, 'x');
System.out.println(b);
//2、补左全(Strings.padStart)
String c=Strings.padStart(a, 10, 'x');
System.out.println(c);
//6、重复字符串(Strings.repeat)
String o="123";
String p=Strings.repeat(o, 3);
System.out.println(p);
//7、获取a,b左公共部分字符串(左边第一个公共部分)
String r="abcdsfsfs";
String s="accdc3sfsd";
String t=Strings.commonPrefix(r, s);
System.out.println(t);
//8、获取a,b右公共部分字符串
String w="faaxyz";
String x="fwefxyz";
String z=Strings.commonSuffix(w, x);
System.out.println(z);
前段时间写业务的时候刚好遇到,一个二级分类要对应好几个三级分类信息。 采用的方法的是map<string,List>,这样会使代码变得冗长,而且每个object都要判断List存不存在,不存在需要new一个。 有了Multimap后就可以直接用。例子如下:
Multimap<String,String> multimap = ArrayListMultimap.create();
multimap.put("lower", "a");
multimap.put("lower", "b");
multimap.put("lower", "c");
List<String> lowerList = (List<String>)multimap.get("lower");
业务场景:必然从用户名查email,反过来又想通过email查用户名。 使用方法:
HashBiMap<String,String> upperToLower = HashBiMap.create();
upperToLower.put("A","a");
upperToLower.put("B","b");
upperToLower.put("C","c");
upperToLower.forcePut("D","c");
System.out.println(upperToLower.get("D"));
BiMap<String, String> lowerToUpper = upperToLower.inverse();
System.out.println(lowerToUpper.get("c"));
Set<String> valuesSet = lowerToUpper.values();
Map<String, String> map = new HashMap<>();
map.put("A","x");
upperToLower.putAll(map);
|