Guava学习笔记(二):基础(Joiner,Objects,Splitter及Strings)
添加Maven依赖
JoinerTest
import com.google.common.base.Joiner;
import org.junit.Assert;
import org.junit.Test;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
public class JoinerTest {
private static final List<String> stringList = new ArrayList<String>();
static {
stringList.add("a");
stringList.add("b");
}
/**
* 基本用法
*
* @see Joiner#join(Object[])
* @see Joiner#join(Iterable)
* @see Joiner#join(Object, Object, Object...)
*/
@Test
public void test_base() {
String join = Joiner.on("|").join(new String[]{"a", "b"});
Assert.assertEquals("a|b", join);
join = Joiner.on("@").join(stringList);
Assert.assertEquals("a@b", join);
join = Joiner.on(",").join("a", "b");
Assert.assertEquals("a,b", join);
}
/**
* 处理有null的情况,跳过或赋予默认值
*/
@Test
public void test_null() {
stringList.add(null);
String join = Joiner.on("|").skipNulls().join(stringList);
Assert.assertEquals("a|b", join);
join = Joiner.on("|").useForNull("no value").join(stringList);
Assert.assertEquals("a|b|no value", join);
}
/**
* 处理追加情況
*/
@Test
public void test_append() {
StringBuilder stringBuilder = new StringBuilder("test:{");
String string = Joiner.on("|").appendTo(stringBuilder, stringList).append("}").toString();
Assert.assertEquals("test:{a|b}", string);
}
@Test
public void test_mapJoiner() {
Joiner.MapJoiner mapJoiner = Joiner.on(",").withKeyValueSeparator("=");
LinkedHashMap<Object, Object> linkedHashMap = new LinkedHashMap<Object, Object>();
linkedHashMap.put("a", 65);
linkedHashMap.put("b", 66);
String join = mapJoiner.join(linkedHashMap);
Assert.assertEquals("a=65,b=66", join);
}
}
ObjectsTest
import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
import com.google.common.collect.ComparisonChain;
import org.hamcrest.core.Is;
import org.junit.Assert;
import org.junit.Test;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
public class ObjectsTest {
private String a;
private List<Integer> b;
private Date date;
@Test
public void test_compareTo() {
ObjectsTest objectsTest = new ObjectsTest();
objectsTest.setA("a");
ObjectsTest otherObjectsTest = new ObjectsTest();
otherObjectsTest.setA("b");
Assert.assertNotEquals(0, objectsTest.compareTo(otherObjectsTest));
}
@Test
public void test_toString() {
b = Arrays.asList(1, 3);
String string = MoreObjects.toStringHelper(this).omitNullValues().add("a", a).add("b", b).toString();
Assert.assertThat(string, Is.is("ObjectsTest{b=[1, 3]}"));
a = "hah";
string = MoreObjects.toStringHelper(this).omitNullValues().add("a", a).add("b", b).toString();
Assert.assertThat(string, Is.is("ObjectsTest{a=hah, b=[1, 3]}"));
}
@Test
public void test_firstNonNull() {
String s = null;
String default_value = MoreObjects.firstNonNull(s, "default value");
Assert.assertEquals("default value", default_value);
}
@Test
public void test_hashCode() {
int i = Objects.hashCode(a, b);
Assert.assertNotEquals(0, i);
}
public String getA() {
return a;
}
public void setA(String a) {
this.a = a;
}
public List<Integer> getB() {
return b;
}
public void setB(List<Integer> b) {
this.b = b;
}
public int compareTo(ObjectsTest objectsTest) {
return ComparisonChain.start().compare(this.a, objectsTest.a).compare(this.date, objectsTest.date).result();
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
}
SplitterTest
import com.google.common.base.Splitter;
import org.junit.Assert;
import org.junit.Test;
import java.util.LinkedHashMap;
import java.util.Map;
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertThat;
public class SplitterTest {
@Test
public void test_base() {
Iterable<String> split = Splitter.on("|").split("a|b|c");
String next = split.iterator().next();
Assert.assertEquals("a", next);
}
@Test
public void test_mapSplitter() {
LinkedHashMap<String, String> linkedHashMap = new LinkedHashMap<>();
linkedHashMap.put("a", "65");
linkedHashMap.put("b", "66");
Map<String, String> stringMap = Splitter.on(",").withKeyValueSeparator("=").split("a=65,b=66");
assertThat(linkedHashMap, is(stringMap));
}
}
StringsTest
import com.google.common.base.CharMatcher;
import org.junit.Test;
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertThat;
public class StringsTest {
/**
* 返回输入字符序列的字符串副本,每个匹配此匹配器的连续字符组由单个替换字符替换。 例如:
* CharMatcher.anyOf(“eko”).collapseFrom(“bookkeeper”,“ - ”) 返回“b-p-r”。
* 默认实现使用indexIn(CharSequence)来查找第一个匹配字符,然后迭代序列的其余部分,为每个字符调用matches(char)。
*/
@Test
public void test_RemoveWhiteSpace() {
String tabsAndSpaces = "String with spaces and tabs ";
String expected = "String with spaces and tabs ";
String scrubbed = CharMatcher.WHITESPACE.
collapseFrom(tabsAndSpaces, ' ');
assertThat(scrubbed, is(expected));
}
/**
* 除了替换连续字符外,将原字符串中的前后空格去掉
*/
@Test
public void test_TrimRemoveWhiteSpace() {
String tabsAndSpaces = " String with spaces and tabs ";
String expected = "String with spaces and tabs";
String scrubbed = CharMatcher.WHITESPACE.
trimAndCollapseFrom(tabsAndSpaces, ' ');
assertThat(scrubbed, is(expected));
}
/**
* 保留数字,另外CharMatcher还有逻辑运算
*
* @see CharMatcher#or(CharMatcher)
* @see CharMatcher#and(CharMatcher)
*/
@Test
public void testRetainFrom() {
String lettersAndNumbers = "foo989yxbar234";
String expected = "989234";
String retained = CharMatcher.JAVA_DIGIT.
retainFrom(lettersAndNumbers);
assertThat(expected, is(retained));
}
}
Guava学习笔记(二):基础(Joiner,Objects,Splitter及Strings)的更多相关文章
- https学习笔记二----基础密码学知识和python pycrypto库的介绍使用
在更详细的学习HTTPS之前,我也觉得很有必要学习下HTTPS经常用到的加密编码技术的背景知识.密码学是对报文进行编解码的机制和技巧.可以用来加密数据,比如数据加密常用的AES/ECB/PKCS5Pa ...
- guava 学习笔记(二) 瓜娃(guava)的API快速熟悉使用
guava 学习笔记(二) 瓜娃(guava)的API快速熟悉使用 1,大纲 让我们来熟悉瓜娃,并体验下它的一些API,分成如下几个部分: Introduction Guava Collection ...
- tensorflow学习笔记二:入门基础 好教程 可用
http://www.cnblogs.com/denny402/p/5852083.html tensorflow学习笔记二:入门基础 TensorFlow用张量这种数据结构来表示所有的数据.用一 ...
- 学习笔记(二)--->《Java 8编程官方参考教程(第9版).pdf》:第七章到九章学习笔记
注:本文声明事项. 本博文整理者:刘军 本博文出自于: <Java8 编程官方参考教程>一书 声明:1:转载请标注出处.本文不得作为商业活动.若有违本之,则本人不负法律责任.违法者自负一切 ...
- guava 学习笔记 使用瓜娃(guava)的选择和预判断使代码变得简洁
guava 学习笔记 使用瓜娃(guava)的选择和预判断使代码变得简洁 1,本文翻译自 http://eclipsesource.com/blogs/2012/06/06/cleaner-code- ...
- [Firefly引擎][学习笔记二][已完结]卡牌游戏开发模型的设计
源地址:http://bbs.9miao.com/thread-44603-1-1.html 在此补充一下Socket的验证机制:socket登陆验证.会采用session会话超时的机制做心跳接口验证 ...
- java之jvm学习笔记二(类装载器的体系结构)
java的class只在需要的时候才内转载入内存,并由java虚拟机的执行引擎来执行,而执行引擎从总的来说主要的执行方式分为四种, 第一种,一次性解释代码,也就是当字节码转载到内存后,每次需要都会重新 ...
- MyBatis:学习笔记(1)——基础知识
MyBatis:学习笔记(1)--基础知识 引入MyBatis JDBC编程的问题及解决设想 ☐ 数据库连接使用时创建,不使用时就释放,频繁开启和关闭,造成数据库资源浪费,影响数据库性能. ☐ 使用数 ...
- Java IO学习笔记二
Java IO学习笔记二 流的概念 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成. 程序中的输入输 ...
- NumPy学习笔记 二
NumPy学习笔记 二 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.<数学分 ...
随机推荐
- ORACLE 内置函数之 GREATEST 和 LEAST(转)
Oracle比较一列的最大值或者最小值,我们会不假思索地用MAX和MIN函数,但是对于比较一行的最大值或最小值呢?是不是日常用的少,很多人都不知道有ORACLE也有内置函数实现这个功能:COALESC ...
- 【C#】Visual Studio 2017 一边Debug,一边修改代码
好久没写C#了,最近在学习著名***工具 shadowsocks-windows 的源代码,想着可以边断点调试,边加上一些注释以方便理解,stackoverflow 和 msdn 随便翻了一下,竟发现 ...
- caffe solver 配置详解
caffe solver通过协调网络前向推理和反向梯度传播来进行模型优化,并通过权重参数更新来改善网络损失求解最优算法,而solver学习的任务被划分为:监督优化和参数更新,生成损失并计算梯度.caf ...
- shell命令行执行python(解析json)
每个脚本都有自己的擅长. 有次实现一个work,使用了shell,php,python看着文件种类多,不方便交接,看着也比较麻烦. 减少文件种类数,也是很有必要的. 遇到的场景:shell程序需要从j ...
- crontab不能执行sudo:抱歉,您必须拥有一个终端来执行 sudo
最近做一个可执行shell调度的需求,要求用户输入shell,然后后台定时调度运行.实现大致为:保存用户的输入,设定时间,crontab定时执行用户的输入.但这里涉及到一个安全问题,如何确定用户的输入 ...
- virtualbox centos安装增强工具和Centos与VirtualBox共享文件夹设置
VirtualBox 大家都习惯性把它简称为 Vbox ,比 VM 的体积小.开源.速 度快.不过在使用 VirtualBox 在虚拟机中安装 CentOS 之后,不能直接运行安装好 Virtual ...
- CentOS下网卡启动、配置等ifcfg-eth0教程(转)
步骤1.配置/etc/sysconfig/network-scripts/ifcfg-eth0 里的文件.it动力的CentOS下的ifcfg-eth0的配置详情: [root@localhost ~ ...
- CFX构建webservice实例,与Spring整合.
项目结构图: 步骤一: 添加maven包依赖 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=&qu ...
- Resource interpreted as Stylesheet but transferred with MIME type text/plain
今天碰到了Resource interpreted as Stylesheet but transferred with MIME type text/plain 这个错误. 原因:在web中配置了f ...
- Vue(八):监听属性watch
Vue.js 可以通过 watch 来响应数据的变化. 以下实例模拟购物车里商品数量增加,对应价格也增加 <!--模拟购物车商品数量增加,价格也随之增加--> <div id = & ...