Google Guava常用类库

什么是Guava

Guava是一个增强Java功能的类库。
Guava工程包含了若干被Google的 Java项目广泛依赖的核心库,例如:集合 [collections] 、缓存 [caching] 、原生类型支持 [primitives support] 、并发库 [concurrency libraries] 、通用注解 [common annotations] 、字符串处理 [string processing] 、I/O 等等。 所有这些工具每天都在被Google的工程师应用在产品服务中。

Guava常用方法

GuavaIO

Guava的Files.readLines()有点脚本语言的意思,但是处理大文件就不方便了

import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.util.List;

import com.google.common.base.Charsets;
import com.google.common.io.Files;
import com.google.common.io.Resources;

/**
 * @author wangchao
 * @date 15-3-23 下午4:06
 */
public class Test {
    public static void main(String[] args) throws IOException {
        // 一次性读取文件到List
        List<String> fileList = Files.readLines(new File(""), Charsets.UTF_8);
        // 一次性读取URL到List
        List<String> urlList = Resources.readLines(new URL(""), Charsets.UTF_8);

        String buffer = "";
        // 写入文件
        Files.write(buffer, new File(""), Charsets.UTF_8);
        // 追加文件
        Files.append(buffer, new File(""), Charsets.UTF_8);
    }
}

Guava String

对字符串操作的封装,包括判断字符串是否为空,连接字符串,拆分字符串等常用的字符串的操作。

import java.io.IOException;
import java.util.Map;

import com.google.common.base.Joiner;
import com.google.common.base.Splitter;
import com.google.common.base.Strings;

/**
 * @author wangchao
 * @date 15-3-23 下午2:48
 */
public class Test {
    public static void main(String[] args) throws IOException {
        String str = "a=1, b=2 ; c=3";
        // 检查字符串是否为空或者null
        System.out.println(Strings.isNullOrEmpty(str)); // false

        // Splitter拆分字符串(可去掉空格),比较蛋疼的是返回类型是Iterable。
        Iterable<String> splitResults = Splitter.onPattern("[,;]").trimResults().omitEmptyStrings().split(str);
        System.out.println(splitResults.toString()); // [a=1, b=2, c=3]

        // 同样可以用Joiner拼接
        String joinResult = Joiner.on(",").join(splitResults);
        System.out.println(joinResult); // a=1,b=2,c=3

        // 二次拆分,返回Map类型
        Map<String, String> kvs = Splitter.onPattern("[,;]").trimResults().omitEmptyStrings()
                .withKeyValueSeparator('=').split(str);
        System.out.println(kvs.toString()); // {a=1, b=2, c=3}
        // 使用Joiner拼接
        String kvsJoinResult = Joiner.on(",").withKeyValueSeparator("=").join(kvs);
        System.out.println(kvsJoinResult); // a=1,b=2,c=3
    }
}

Guava 新集合类

类名特点
Multiset对key进行计数
Multimap允许一个key对应多个value
BiMap允许key和value进行反转
Table允许两个key对应一个value
RangeSet描述了一组不相连的、非空的区间
RangeMap描述了一组不相连的、非空的区间,对应value

Guava学习网站

内存.溢出 http://outofmemory.cn/java/guava/
并发编程网 http://ifeve.com/google-guava/
在线文档 http://tool.oschina.net/apidocs/apidoc?api=guava

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Guava类库中的Table是一个双键的Map,可以理解为一个行列式的数据结构。 Table可以用来表示一个映射,其中每个键都有一个与之关联的值,而且这个键需要由两个参数来确定。在Table中,第一个键称为"行键",第二个键称为"列键",而对应的值称为"值"。 Table的实现方式可以看作是一个Map<RowKey, Map<ColumnKey, Value>>的嵌套结构,其中RowKey和ColumnKey分别表示行键和列键,Value表示对应的值。 Table提供了多种视图,包括行视图、列视图、单元格视图等,这些视图可以方便地进行表格的操作和查询。 下面是一个简单的示例代码: ```java Table<String, String, Integer> table = HashBasedTable.create(); table.put("row1", "col1", 1); table.put("row1", "col2", 2); table.put("row2", "col1", 3); table.put("row2", "col2", 4); System.out.println(table.get("row1", "col1")); // 输出1 System.out.println(table.row("row1")); // 输出{col1=1, col2=2} System.out.println(table.column("col1")); // 输出{row1=1, row2=3} System.out.println(table.cellSet()); // 输出[(row1,col1)=1, (row1,col2)=2, (row2,col1)=3, (row2,col2)=4] ``` 在上面的示例中,我们创建了一个Table对象,并往其中添加了四个元素。然后,我们分别通过get方法、row方法、column方法和cellSet方法获取了对应的视图,并输出了它们的内容。 需要注意的是,Table中的行键、列键和值都可以为null,但是在使用时需要特别注意空指针异常的问题。此外,Table中的行键和列键必须实现equals和hashCode方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值