没有合适的资源?快使用搜索试试~ 我知道了~
NULL 博文链接:https://isuifengfei.iteye.com/blog/2031770
资源推荐
资源详情
资源评论
Guava 学习笔记
Guava 是 google 的一个开源工具包,提供了很多方便使用的工具类。这里抛砖引玉,对一些
学习过程中感觉很使用的工具类做一个介绍。
1.基本工具
Joiner 和 Splitter
Joiner 可以将集合拼接成字符串。
Joiner.on(“#”) 表示每个元素直接使用#进行拼接
MapJoiner 用于将 map 中的每一个 entry 进行拼接,并且可以指定 key,value 拼接的字符串。
对于存储中使用一个字段表示多行记录的情况,非常适合使用 MapJoiner 进行拼接。
@Test
public void test1() {
List<String> stringList = Lists.newArrayList("aaa", "bbb", "ccc", null);
// 消除 null 的元素
String result = Joiner.on("#").skipNulls().join(stringList);
System.out.println(result); // aaa#bbb#ccc
// null 元素使用统一的 value 替代
String result2 = Joiner.on("#").useForNull("null").join(stringList);
System.out.println(result2); //aaa#bbb#ccc#null
}
@Test
public void testMapJoiner(){
Map<String,String> testMap = Maps.newLinkedHashMap();
testMap.put("aaa","111");
testMap.put("bbb","222");
testMap.put("ccc","333");
// entry 之间使用#连接,k v 之间使用=连接
String returnedString = Joiner.on("#").withKeyValueSeparator("=").join(testMap);
System.out.println(returnedString); //aaa=111#bbb=222#ccc=333
}
Splitter 的作用和 Joiner 刚好相反,可以将一个字符串转换为集合。
MapSplitter 的作用和 MapJoiner 相反,用于将 MapJoiner 生成的字符串进行解析。
Preconditions
Preconditions 用于对前置条件进行检查,如果不符合则抛出某种 RuntimeException。
@Test
public void test1() {
List<String> list = Splitter.on(",").splitToList("aaa,bbb,ccc,");
System.out.println(list); // [aaa, bbb, ccc, ]
// trim 并且剔除空字符串
List<String> list2 = Splitter.on(",").trimResults().omitEmptyStrings()
.splitToList("aaa,bbb,ccc,");
System.out.println(list2); // [aaa, bbb, ccc]
}
@Test
public void testMapSplitter() {
String startString = "aaa=111#bbb=222#ccc=333";
Map<String, String> testMap = Maps.newLinkedHashMap();
Splitter.MapSplitter mapSplitter = Splitter.on("#")
.withKeyValueSeparator("=");
Map<String, String> splitMap = mapSplitter.split(startString);
System.out.println(splitMap); // {aaa=111, bbb=222, ccc=333}
}
@Test
public void test1(){
Preconditions.checkArgument( 1>0 );
// Preconditions.checkArgument( 1<0, "hehe" );
String str = "hello";
Preconditions.checkNotNull(str);
Preconditions.checkState( 1>0 );
// Preconditions.checkState( 1<0, "world" );
}
Preconditions.checkNotNull() 检查传入参数是否是 null,如果是,抛出 NullPointerException
Preconditions.checkArgument() 检查传入的 boolean 表 达 式 , 如 果 是 false , 抛出
IllegalArgumentException
Preconditions.checkState()检查传入的 boolean 表达式,如果是 false,抛出 IllegalStateException
Objects
Obejcts 类的一个非常方便的方法是 hashCode()方法,一个类的 hashCode 方法通常是按照
result = result * 31 + c 的公式针对需要唯一索引对象的几个属性值来编码的。使用 Objects 只
需要一行。
Optinal
Optional 可以将没有元素和 null 进行区分。
public int hashCode(){
return Objects.hashCode(property1, property2,property3);
}
@Test
public void test(){
String str = "aaa";
Optional<String> op1 = Optional.of(str); // 传入必须不是 null
Assert.assertTrue(op1.isPresent());
Assert.assertEquals(op1.get(),str);
Optional<String> op2 = Optional.absent(); //返回空的 Optional
Assert.assertFalse(op2.isPresent());
Optional<String> op3 = Optional.fromNullable(null); // 如果入参是 null,返回空的
Optional
Assert.assertFalse(op3.isPresent());
}
2. 集合
处理 JDK 集合的工具
Lists
构建新集合
集合分组
Sets
List<Person> list = Lists.newArrayList();
@Test
public void testPartition(){
List<String> list = Lists.newArrayList("1","2","3","4");
List<List<String>> partition = Lists.partition(list, 2); // 将 list 拆分成多个子集合,每
个子集合中有 2 个元素
System.out.println(partition); // [[1, 2], [3, 4]]
}
private Set<String> set1 = Sets.newHashSet("1","2","3");
private Set<String> set2 = Sets.newHashSet("2","3","4","5");
@Test
public void testDifffence(){
SetView<String> diff1sub2 = Sets.difference(set1, set2); // 返回 set1 中有,但是
set2 中没有的元素
System.out.println(diff1sub2); // [1]
SetView<String> diff2sub1 = Sets.difference(set2, set1);
System.out.println(diff2sub1); // [5, 4]
}
剩余15页未读,继续阅读
资源评论
weixin_38669628
- 粉丝: 383
- 资源: 6万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功