Joiner的简单了解

    public static void main(String[] args) {

    	System.out.println("---------------- ");
    	/**
    	 * Google Guava提供了Joiner类专门用来连接String。
    	 * 譬如说有个String数组,里面有"a","b","c",
    	 * 我们可以通过使用StringBuilder来创建String "a,b,c"。
    	 */
    	Joiner joiner = Joiner.on(";");
    	String str1 = joiner.join(new String[]{"a","b","c"});
    	System.out.println(" str1 : " + str1);
    
    
    	/**
    	 * 当然Joiner.join还提供了参数为Iterable的overload形式。也就是说你可以传各种List和Set。
    	 * 如果被连接String里面要过滤null,可以这样
    	 */
    	Joiner joiner2 = Joiner.on(";").skipNulls(); //过滤null
    	String str2 = joiner2.join(new String[]{"a","b",null,"c"});
    	List<String> list = new ArrayList<String>();
    	list.add("1");
    	list.add("2");
    	list.add(null);
    	list.add("3");

    	String str21 = joiner2.join(list);
    	System.out.println(" str2 : " + str2);
    	System.out.println(" str21 : " + str21);
    
    	/**
    	 * 如果对null进行替换操作
    	 */
    	Joiner joiner3 = Joiner.on(";").useForNull("!");
    	String str3 = joiner3.join(new String[]{"a","b",null,"c"});
    	System.out.println(" str3 : " + str3);
    
    	/**
    	 * Joiner还提供了appendTo函数,对传入的StringBuider作处理
    	 */
    	Joiner joiner4 = Joiner.on(";");
    	StringBuilder ab = new StringBuilder("start : ");
    	StringBuilder str4 = joiner4.appendTo(ab, new String[]{"a","b","c"});
    	System.out.println(" str4 : " + str4.toString());
    
    	/**
    	 * MapJoiner类也利用了Joiner提供的Map的join功能
    	 */
    	Map<Integer, String> map = new HashMap<Integer, String>();
    	map.put(1, "a");
    	map.put(2, "b");
    	MapJoiner joiner5 = Joiner.on(";").withKeyValueSeparator("→");
    	String str5 = joiner5.join(map);
    	System.out.println(" str5 : " + str5);
    
    	//url拼接
    	Map<String, Object> map2 = new HashMap<String, Object>();
    	map2.put("param1", "HAN");
    	map2.put("param2", 2);
    	MapJoiner joiner6 = Joiner.on("&").withKeyValueSeparator("=");
    	String str6 = joiner6.join(map2);
    	System.out.println(" str6 : " + str6);
    
    	String str7 = joiner6.join(ImmutableMap.of("id","123","name","green"));
    	System.out.println(" str7 : " + str7);
    
    	//分割
    	final Map<String, String> join = Splitter.on("&").withKeyValueSeparator("=").split("id=123&name=green&param1=HAN&param2=2");
    	System.out.println(" map :" + join.toString());
	}
时间: 2024-11-05 18:46:55

Joiner的简单了解的相关文章

guava之Joiner 和 Splitter(转)

最近在给客户准备一个Guava的分享,所以会陆续的更新关于Guava更多的细节分享.本文将记录Guava中得字符串处理Joiner(连接)和Splitter(分割)处理. Joiner 首先我们来看看下面我们经常遇见的一个案例: 题目: 对于一个如下定义List List<String> list = new ArrayList<String>("1", "2", null, “3”); 按照’,’分割,并过滤掉null. 如果不用第三方库,

ElasticSearch简单使用

What is ElasticSearch ? Elasticsearch是一个基于Apache Lucene(TM)的开源搜索引擎.无论在开源还是专有领域,Lucene可以被认为是迄今为止最先进.性能最好的.功能最全的搜索引擎库. 但是,Lucene只是一个库.想要使用它,你必须使用Java来作为开发语言并将其直接集成到你的应用中,更糟糕的是,Lucene非常复杂,你需要深入了解检索的相关知识来理解它是如何工作的. Elasticsearch也使用Java开发并使用Lucene作为其核心来实现

guava之Joiner 和 Splitter

最近在给客户准备一个Guava的分享,所以会陆续的更新关于Guava更多的细节分享.本文将记录Guava中得字符串处理Joiner(连接)和Splitter(分割)处理. Joiner 首先我们来看看下面我们经常遇见的一个案例: 题目: 对于一个如下定义List List<String> list =of("1", "2", null, “3”); 按照’,’分割,并过滤掉null. 如果不用第三方库,如common-lange,Guava,用原生jav

Joiner

Joiner 我们经常需要将几个字符串,或者字符串数组.列表之类的东西,拼接成一个以指定符号分隔各个元素的字符串,比如把 [1, 2, 3] 拼接成 "1 2 3". 在 Python 中我只需要简单的调用 str.join 函数,就可以了,就像这样. ' '.join(map(str, [1, 2, 3])) 到了 Java 中,如果你不知道 Guava 的存在,基本上就得手写循环去实现这个功能,代码瞬间变得丑陋起来. Guava 为我们提供了一套优雅的 API,让我们能够轻而易举的

MyBatis 插件使用-自定义简单的分页插件

目录 1 分页参数的传递 2 实现 Interceptor 接口 2.1 Interceptor 接口说明 2.1 注解说明 2.3 实现分页接口 PageInterceptor 3. 更改配置 4 测试 @ 作为一个优秀的框架, 其除了要解决大部分的流程之外, 还需要提供给使用者能够自定义的能力. MyBatis 有缓存, 有插件接口等.我们可以通过自定义插件的方式来对 MyBatis 进行使用上的扩展. 以一个简单的 mysql 分页插件为例, 插件的使用包含以下步骤: 1 分页参数的传递

C# Ping 简单使用

编程过程中,有时候需要判断主机是否在线,最简单的方法就是使用Windows的Ping命令看看能否ping通.看到网上很多文章,说用C#去调用windows的ping.exe,然后解析返回的字符串.我觉得这种方式太麻烦了,就做一下简单判断,不想弄那么麻烦. 查了一下,C#专门提供了一个Ping类,与Windows下的ping命令类似: 命令空间: System.Net.NetworkInformation; 使用方法: bool online = false; //是否在线 Ping ping =

自动生成简单四则运算的C语言程序

该程序是在博客园里面找的,具体是谁的找了半天没找到,无法提供它原本的链接.由于自己写的过于简单,且有一些功能暂时无法实现,所以就找了一个来应付作业,望原谅.在这个程序的源码中我改了一个错误的地方,源码中有这样一个随机数发生器的初始化函数的语句:"srand((unsigned)time(NULL))".srand函数是随机数发生器的初始化函数.但是正确的写法应该是:srand(unsigned( time(NULL))):为了防止随机数每次重复,常常使用系统时间来初始化,即使用time

Mysql的锁机制与PHP文件锁处理高并发简单思路

以购买商品举例: ① 从数据库获取库存的数量. ② 检查一下库存的数量是否充足. ③ 库存的数量减去买家购买的数量(以每个用户购买一个为例). ④ 最后完成购买. 仅仅这几行逻辑代码在并发的情况下会出现问题,自己可以想象一下. 这里暂时就不测试了,下面会针对并发的处理给出测试结果. 创建表: CREATE TABLE `warehouse` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id', `stock` int(11) NOT NULL

Winfrom 简单的安卓手机屏幕获取和安卓简单操作

为啥我要做这个东西了,是因为经常要用投影演示app ,现在有很多这样的软件可以把手机界面投到电脑上 ,但都要安装,比如说360的手机助手,我又讨厌安装,于是就自己捣鼓了下 做了这个东西, 实现了以下简单功能   1.屏幕获取(因为是截图方式获取的,所以有点卡顿) 2.实现点击功能,并在点击的时候出现一个手势图标,方便用户观看 3.实现简单的滑动功能 4.实现在界面上画图功能 5.实现拖拽安装apk功能 操作说明:鼠标左边 模拟手机点击,中键停止/开始刷新界面(画图的时候不能刷新),右键去掉画图内