`
bastengao
  • 浏览: 150564 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

guava 实用操作集合

    博客分类:
  • java
阅读更多
guava是 google 几个java核心类库的集合,包括集合、缓存、原生类型、并发、常用注解、基本字符串操作和I/O等等。
  
   大家平时经常遇到某些相同的问题,自己写代码也都能解决。但是久而久之会感觉到很痛苦,因为我们一而再,再而三的重复发明轮子。为了不再忍受痛苦,也许我们可以总结自己的类库,但是新的问题来了。自己总结的类库很难与大家分享,不能帮助到更多人。同时自己的类库要不断的进行维护。guava 正是出于这样的目的而来的。

   只说不练不行啊,让我们举上一两个例子
判断 String不为null,且不为空
String str=...;
//use java
if(str !=null && !str.isEmpty()){
    //do something
}


//use guava
if(!Strings.isNullOrEmpty(str)){
    //do something
}

上而的例子还不是很给力,让我们举一个更给力的例子。复制文件
File from=...;
File to=...;

//use java
FileInputStream in=new FileInputStream(from);
FileOutputStream out=new FileOutputStream(to);
byte[] buff=new byte[1024];
int readLength=-1;
while((readLength = in.read(buff)) > 0){
    out.write(buff, 0, readLength);
}
in.close();
out.close();

//use guava
Files.copy(from,to); //注意,只用了一行代码噢


    通过上面的例子,已经能感觉到guava的强大。接下来,让我们更深入看看guava的其他功能。guava(r09-api)分为这几个包
  • base              基本的工具类与接口
  • io                 io流相关的工具类与方法
  • net               网络地址相关的工具类与方法
  • primitives        原始类型的工具类
  • collect           通用集合接口与实现,与其集合相关工具类
  • util.concurrent 并发相关工具类


base

字符串相关工具类
Strings
public class StringsTest {
    @Test
    public void test() {
        //将空字符串转换为null
        Assert.assertEquals(null, Strings.emptyToNull(""));
        //将null转换为空字符串
        Assert.assertEquals("", Strings.nullToEmpty(null));
        //判断字符串为null或者为空
        Assert.assertTrue(Strings.isNullOrEmpty("") && Strings.isNullOrEmpty(null));
        //将字符串重复
        Assert.assertEquals("javajavajava", Strings.repeat("java", 3));
    }
}


CharMatcher
public class CharMatcherTest {
    @Test
    public void test() {
        String source = "a1b2c3";
        CharMatcher matcher = CharMatcher.DIGIT; //预定义的 DIGIT 类型
        Assert.assertTrue(mathcer.match('8'));
        Assert.assertEquals("123", matcher.retainFrom(source));
        Assert.assertEquals(3, matcher.countIn(source));
        Assert.assertEquals("abc", matcher.removeFrom(source));
        Assert.assertEquals("a2b3c", matcher.trimFrom("1a2b3c4"));
    }
}

Jioner
public class JoinerTest {
    @Test
    public void test() {
        Assert.assertEquals("2011-08-04", Joiner.on("-").join("2011", "08", "04"));
    }
}


Splitter
public class SplitterTest {
    @Test
    public void test() {
        Splitter.on(',').split("a,b"); //结果返回Iterable<String>,包含 "a" and "b"
        //将结果中的元素trim
        //结果依然包含  "a" 和 "b" ,而不是 "a " 和 " b"
        Splitter.on(',').trimResults().split("a , b"); 
        //忽略空字符串
        //结果必须是"a" 和 "b",而不是 "a" ,"" 和 "b"
        Splitter.on(',').omitEmptyStrings().split("a,,b"); 
    }
}


CaseFormat
public class CaseFormatTest {

    @Test
    public void test() throws IOException {
        // helloGuava => HELLO_GUAVA
        Assert.assertEquals("HELLO_GUAVA", CaseFormat.LOWER_CAMEL.to(CaseFormat.UPPER_UNDERSCORE, "helloGuava"));
        // hello-guava => HelloGuava
        Assert.assertEquals("HelloGuava", CaseFormat.LOWER_HYPHEN.to(CaseFormat.UPPER_CAMEL, "hello-guava"));
    }
}


其他
Preconditions
有些方法在执行前,先要检查传入的参数是否正确,或者类的状态是否正确。通常会这样做
if (count <= 0) {
       throw new IllegalArgumentException("must be positive: " + count);
}

guava就可以这样,达到相同的效果
Preconditions.checkArgument(count > 0, "must be positive: %s", count);


I/O
ByteStreams提供了针对字节流的工具方法
InputStream from=...;
OutputStream to=...;
ByteStreams.copy(from,to); //复制


CharStreams提供了针对字符流的工具方法
Reader from =...;
Writer to =...;
CharStreams.copy(from, to); //复制


Files提供了针对文件的工具方法
File from=...;
File to=...;
Files.copy(from, to); //复制

Files.deleteDirectoryContents(File directory); //删除文件夹下的内容(包括文件与子文件夹)
Files.deleteRecursively(File file); //删除文件或者文件夹
Files.move(File from, File to); //移动文件


Resources提供了针对classpath下资源操作的工具方法
URL url = Resources.getResource("config.xml"); //获取classpath根下的config.xml文件url
7
13
分享到:
评论
1 楼 白云飞 2012-05-05  
不错,很好用,看了我也要学习下了

相关推荐

    guava(google的java集合包)

    3. **并发编程支持**:Guava提供了实用的并发工具类,如ListenableFuture、Service和CountDownLatch等,它们简化了多线程环境下的编程,同时增强了同步和异步操作的控制。 4. **函数式编程**:Guava引入了函数式...

    guava-18.0(guava-18.0.jar和guava-18.0-sources.jar)

    Guava是Google开发的一个核心库,它为Java平台提供了许多实用工具类,涵盖了集合、并发、I/O、字符串处理、数学运算等多个方面。这个压缩包包含的是Guava库的18.0版本,分为两个部分:`guava-18.0.jar`和`guava-18.0...

    guava-23.0.zip guava.jar guava

    1. **集合框架**:Guava提供了丰富的集合类,如Multiset(多集)、Multimap(多映射)、ImmutableCollection(不可变集合)等,这些集合类具有更好的性能和功能,比Java内置的集合类更为强大。 2. **缓存机制**:...

    Google的guava实战

    Google的Guava是Java开发中一个非常强大的工具库,它由Google工程师开发并维护,提供了一套丰富的Java实用工具集合。Guava的目的是为了简化Java编程,减少代码冗余和提升代码质量。Guava中包含的工具种类繁多,涵盖...

    google开源项目guava.jar包

    Guava的核心特性包括集合框架、缓存、原生类型支持、并发库、字符串处理、I/O操作等。这个“guava.jar”文件就是包含了所有这些功能的归档包。 Guava的集合框架扩展了Java内置的集合类,如List、Set和Map,提供了更...

    guava-19.0 jar和sources

    在Java开发中,Guava库被广泛使用,因为它包含了大量的集合框架、并发支持、缓存机制、字符串处理、I/O操作等多个方面的功能。 标题中的"guava-19.0.jar"是Guava库的19.0版本的二进制文件,包含了编译后的Java类,...

    Guava 工程项目包 有实例

    Guava 是一个由 Google 开发并维护的 Java 库,它提供了许多实用工具类和集合框架的增强功能,极大地丰富了 Java 平台的标准库。Guava 的目标是解决 Java 开发人员在日常工作中遇到的各种常见问题,提高开发效率和...

    google guava 中文教程

    Google Guava是Google开发的一个开源Java库,它包含了一系列高级且实用的集合类、缓存机制、并发工具、字符串处理、I/O工具等,极大地提升了Java开发者的工作效率。Guava的目标是通过提供一系列现代实用工具,帮助...

    guava-21.0-rc2 、guava-21.0-rc2-javadoc 、guava-21.0-rc2-sources

    - **集合框架**: Guava的集合框架进行了优化,提供了一些新的实用工具类,如`ImmutableMultiset`和`ImmutableSortedSet`,这些类提供了不可变且高效的集合实现。 - **缓存**: `LoadingCache`的性能提升和更丰富的API...

    Google Guava 官方教程

    Google Guava 是一个广泛使用的 Java 库,它提供了一系列现代编程实用工具,旨在简化常见的编程任务。Guava 提供了集合框架的扩展、并发支持、缓存机制、字符串处理工具、I/O 工具以及许多其他功能。这个官方教程将...

    Google-guava 19.0

    Google Guava是Google为Java开发者提供的一套强大的工具库,它包含了一系列高效、实用的集合框架、并发库、缓存机制、I/O操作以及字符串处理等功能。Guava 19.0版本是其历史中的一个重要里程碑,引入了许多优化和新...

    guava使用实例

    Guava是Google开发的一个Java库,它提供了许多高级功能,如集合、缓存、并发工具、I/O操作、字符串处理、散列算法等。在本篇文章中,我们将深入探讨Guava在实际应用中的使用实例,包括文件操作、字符串操作、基本...

    guava14.0.1jar包

    5. **字符串处理**:Guava的Strings类包含了许多实用的字符串操作方法,如split、join、substringAfter等,简化了对字符串的操作。 6. **I/O操作**:Guava的IO类提供了对文件、输入/输出流的高效处理,包括读写操作...

    guava-API文档

    Guava是Google开发的一个Java库,它提供了许多高级和实用的集合框架、缓存机制、并发工具、字符串处理函数以及I/O工具等。Guava API文档详细地介绍了这个库的各种功能,帮助开发者更好地理解和使用Guava。 1. 集合...

    guava23.0,用于安卓软件开发

    Guava库包含了各种集合、缓存、并发库、原生类型支持、字符串处理、I/O等实用功能,是Android开发中的重要辅助工具。在标题中提到的"guava23.0",是指Guava库的版本号为23.0,这是一个针对Android开发的版本。 在...

    guava 常用API说明

    尽管Java 8引入了Stream API,但Guava的FluentIterable类提供了类似的功能,允许在Java 7及更早版本中使用链式操作处理集合。 8. **I/O工具** Guava的Files、Path、ByteSource、CharSink等类提供了更强大的文件...

    guava-18.0资料

    Guava是Google开发的一个核心库,它为Java平台提供了许多实用工具类,极大地丰富了Java标准库的功能。这个"guava-18.0资料"包含的资源是Guava库的18.0版本,该版本是Guava的一个稳定版本,提供了一系列改进和新特性...

    guava-jdk5

    Guava是Google为Java平台推出的一个开源库,它集合了许多实用的功能,极大地提高了Java开发的效率。Guava-JDK5是Guava的一个版本,专为支持Java 5的环境而设计。这个版本包含了Guava的核心特性,使得开发者在使用...

    google guava

    Google Guava是一个由Google开发并维护的开源Java库,它为Java开发者提供了许多实用的工具类和集合框架,极大地简化了常见的编程任务。这个框架包含了多个模块,如基础(base)、缓存(cache)、I/O(io)以及并发...

    guava-18.0.rar

    Guava 提供了一系列高效、实用的工具类,极大地丰富了 Java 标准库的功能,尤其在集合框架、并发处理、I/O 操作等方面有着显著的优势。Guava 18.0 版本是一个稳定版本,它包含了众多经过优化和测试的组件,适用于...

Global site tag (gtag.js) - Google Analytics