guava Splitter 与java 内置的string的split 方法的区别

本文探讨了Guava库中的Splitter工具类,对比Java内置的字符串分割方法,突出了GuavaSplitter的灵活性与强大功能,包括如何处理空字符串、转换为List集合等实用操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文:https://blog.youkuaiyun.com/weixin_38553453/article/details/75336385 

java内置的会忽略空内容,guava Splitter不会忽略,也可以自由选择的忽略。
guava Splitter  可以通过splitToList方法直接将结果转成List。

/**
 * {@code Splitter}和{@code Joiner} 这两个对于map的相反的操作,在web框架例如spring mvc中用到过.
 *
 * 对于get url后面的参数和pos form中前端参数的连接和后端的拆分都有用到.每个框架的处理思维是一样的.
 *
 * @author doctor
 *
 * @since 2015年3月14日 下午9:00:17
 */
..............
  @Test
    public void test_string_split() {
        String[] split = "a,b,,".split(","); // java内置的会忽略空内容
        assertThat(split, equalTo(Lists.newArrayList("a", "b").toArray()));
    }
 
    @Test
    public void test_guava_Splitter() {
        List<String> splitToList = Splitter.on(",").splitToList("a,b,,");//guava不会忽略
 
        assertThat(splitToList, equalTo(Lists.newArrayList("a", "b", "", "")));
    }
 
 @Test
    public void test_guava_Splitter_omitEmptyStrings() {
        // 或者可以自由选择的忽略 ,像java一样,忽略空字符串
        List<String> splitToList = Splitter.on(",").omitEmptyStrings().trimResults().splitToList("a,b,,");
 
        assertThat(splitToList, equalTo(Lists.newArrayList("a", "b")));

 

### Java Guava 库的使用文档 Guava 是由 Google 开发并维护的一套核心库集合,提供了许多实用工具类来简化日常编程工作[^1]。这些工具涵盖了集合框架增强、缓存机制、原生不可变集合支持以及字符串处理等多个方面。 #### 基本功能展示 ##### 不可变集合 为了创建一个不可变列表,可以采用如下方式: ```java import com.google.common.collect.ImmutableList; ImmutableList<String> immutableList = ImmutableList.of("apple", "banana"); // 尝试修改该列表将会抛出 UnsupportedOperationException 异常 immutableList.add("orange"); ``` ##### 缓存构建器 CacheBuilder 的简单应用实例 下面是一个简单的例子展示了如何利用 `CacheBuilder` 来实现带有过期策略的记忆化函数: ```java import com.google.common.cache.Cache; import com.google.common.cache.CacheBuilder; public class Example { private static final int MAX_SIZE = 100; // 设置最大容量 private static final long EXPIRE_AFTER_WRITE_DURATION = 10L; // 单位秒 public static void main(String[] args) throws Exception { Cache<Object, Object> cache = CacheBuilder.newBuilder() .maximumSize(MAX_SIZE) .expireAfterWrite(EXPIRE_AFTER_WRITE_DURATION, TimeUnit.SECONDS) .build(); // 使用cache.put() 和 cache.getIfPresent() 方法来进行数据存储和检索... } } ``` ##### Joiner 和 Splitter 类用于高效拼接拆分字符串 当涉及到大量字符串连接操作时,Joiner 可以显著提高性能;而 Splitter 则适用于快速分割字符串为多个部分: ```java import com.google.common.base.Joiner; import com.google.common.base.Splitter; String joined = Joiner.on("; ").join(Arrays.asList("a", "b", "c")); Iterable<String> split = Splitter.on(';').trimResults().omitEmptyStrings().split("foo;bar;; qux ;"); System.out.println(joined); // 输出:"a; b; c" for (String s : split) { // 迭代输出 ["foo","bar","qux"] System.out.print(s + ", "); } ``` 通过上述几个方面的介绍可以看出,Guava 提供了许多强大而又便捷的功能模块,在实际开发过程中能够极大地提升编码效率和程序质量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值