`

Google-Guava工具类整理

    博客分类:
  • Java
 
阅读更多
更详细整理: http://blog.csdn.net/alecf/article/details/24775979
原文: http://my.oschina.net/shma1664/blog/596904
1、基本功能

1)字符串操作
package com.shma.guava.base;
import java.util.Map;
import org.junit.Test;
import com.google.common.base.Joiner;
import com.google.common.base.Splitter;
import com.google.common.base.Strings;
import com.google.common.collect.Maps;
/**
 * 字符串处理
 * @author admin
 *
 */
public class StringsTest {
 /**
  * 判断是否为空
  */
 @Test
 public void testIsNullOrEmpty() {
  String name = "";
  System.out.println(Strings.isNullOrEmpty(name)); //true
   
  String name2 = null;
  System.out.println(Strings.isNullOrEmpty(name2)); //true
   
  String name3 = "shma";
  System.out.println(Strings.isNullOrEmpty(name3)); //false
 }
 /**
  * 截取两个字符串的相同前缀
  */
 @Test
 public void testCommonPrefix() {
  // 两个字符串相同的前缀或者后缀
  String aString = "hi,a.shma.hello";
  String bString = "hi,b.jjq.hello";
  System.out.println(Strings.commonPrefix(aString, bString)); //hi,
 }
  
 /**
  * 截取两个字符串的相同后缀
  */
 @Test
 public void testCommonSuffix() {
  // 两个字符串相同的前缀或者后缀
  String aString = "hi,a.shma.hello";
  String bString = "hi,b.jjq.hello";
  System.out.println(Strings.commonSuffix(aString, bString)); //.hello
 }
  
 /**
  * 字符串补全
  */
 @Test
 public void testPad() {
  int minLength = 5;
   
  //末尾以0补全
  String padEndResult = Strings.padEnd("123", minLength, '0');
  System.out.println(padEndResult); //12300
   
  //开始补全
  String padStartResult = Strings.padStart("123", minLength, '0');
  System.out.println(padStartResult); //00123
   
 }
  
 /**
  * 拆分字符串
  */
 @Test
 public void testSplitter() {
  Iterable<String> iterable = Splitter.onPattern("[,,;]")
           .trimResults()
           .omitEmptyStrings()
           .split("马韶华,张琦,笑笑,,老李,类型 哈哈,非也; 宵夜 ");
  for(String item : iterable) {
   System.out.println(item);
  }
   
  //二次拆分
  String toSplitString = "a=1; b=2, c=3";
  Map<String, String> kvs = Splitter.onPattern("[;,]")
            .trimResults()
            .omitEmptyStrings()
            .withKeyValueSeparator("=")
            .split(toSplitString);
   
  System.out.println(kvs); //{a=1, b=2, c=3}
 }
  
 /**
  * 字符串合并
  */
 @Test
 public void testJoin() {
   
  String users = Joiner.on(",").join(new String[]{"张三", "李四", "王五"});
  System.out.println(users); //张三,李四,王五
   
  //将Map<String, String>合并
  Map<String, String> dataMap = Maps.newHashMap();
  dataMap.put("1001", "张三");
  dataMap.put("1002", "李四");
  dataMap.put("1003", "王五");
  dataMap.put("1004", "马六");
  String mapString = Joiner.on(",").withKeyValueSeparator("=").join(dataMap);
   
  System.out.println(mapString); // 1003=王五,1004=马六,1001=张三,1002=李四
   
   
 }
  
 /**
  * 重复输出次数
  */
 @Test
 public void testRepeat() {
  System.out.println(Strings.repeat("1234", 2)); // 12341234
 }
  
  
}




2)对象封装:Objects
package com.shma.guava2.base;
import org.junit.Test;
import com.google.common.base.Objects;
import com.google.common.collect.ComparisonChain;
/**
 * 复写Object中的方法实现
 * @author admin
 *
 */
public class ObjectsTest {
  
 /**
  * 比较大小
  */
 @Test
 public void compareTest() {
  Person person1 = new Person("jqq", 24);
  Person person2 = new Person("jqq", 28);
  Person person3 = new Person("shma", 24);
  Person person4 = new Person("shma", 21);
  Person person5 = new Person("shma", 21);
  System.out.println(person1.compareTo(person2));
  System.out.println(person1.compareTo(person3));
  System.out.println(person3.compareTo(person4));
  System.out.println(person5.compareTo(person4));
 }
  
 /**
  * 实现toString
  */
 @Test
 public void toStringTest() {
  System.out.println(Objects.toStringHelper(this).add("name", "shma").toString());
  System.out.println(Objects.toStringHelper(Person.class).add("name", "shma").add("age", 23).toString());
   
  Person person1 = new Person("jqq", 24);
  Person person2 = new Person("jqq", 24);
  System.out.println(person1);
  System.out.println(person2);
  System.out.println(person1.hashCode());
  System.out.println(person2.hashCode());
  System.out.println(person1.equals(person2));
 }
 /**
  * 判断equals
  */
 @Test
 public void equalsTest() {
  System.out.println(Objects.equal(null, "a")); //false
  System.out.println(Objects.equal("a", "a")); //true
  System.out.println(Objects.equal("", "")); //true
  System.out.println(Objects.equal("a", "")); //false
  System.out.println(Objects.equal(null, null)); //true
   
  System.out.println(Objects.equal(new Person("shma", 23), new Person("shma", 23))); //false
   
  Person person = new Person("jqq", 24);
  System.out.println(Objects.equal(person, person)); //true
 }
  
 /**
  * 计算hashcode
  * 
  */
 @Test
 public void hashCodeTest() {
  System.out.println(Objects.hashCode("a")); //128
  System.out.println(Objects.hashCode("a")); //128
   
  System.out.println(Objects.hashCode("a", "b")); //4066
  System.out.println(Objects.hashCode("b", "a")); //4096
   
  System.out.println(Objects.hashCode("b", "a", "c")); //127075
  System.out.println(Objects.hashCode("a", "c", "b")); //126175
   
  System.out.println(Objects.hashCode(new Person("shma", 23))); //21648900
  System.out.println(Objects.hashCode(new Person("shma", 23))); //21846074
   
  Person person = new Person("jqq", 24);
  System.out.println(Objects.hashCode(person)); //13856786
  System.out.println(Objects.hashCode(person)); //13856786
 }
  
 class Person implements Comparable<Person> {
     public String name;
     public int age;
     Person(String name, int age) {
         this.name = name;
         this.age = age;
     }
  @Override
  public String toString() {
   return Objects.toStringHelper(Person.class)
         .add("name", this.name)
         .add("age", this.age)
         .toString();
  }
  @Override
  public int hashCode() {
   return Objects.hashCode(name, age);
  }
  @Override
  public boolean equals(Object obj) {
   if (this == obj)
    return true;
   if (obj == null)
    return false;
   if (getClass() != obj.getClass())
    return false;
   Person other = (Person) obj;
   if(this.name == other.name && this.age == other.age) 
    return true;
   return false;
  }
  @Override
  public int compareTo(Person perosn) {
    
   return ComparisonChain.start()
          .compare(this.name, perosn.name)
          .compare(this.age, perosn.age)
          .result();
  }
 }
  
 class Student implements Comparable<Student> {
  private String name;
  private int age;
  private int score;
   
  public Student() {
   super();
  }
  public Student(String name, int age, int score) {
   super();
   this.name = name;
   this.age = age;
   this.score = score;
  }
  @Override
  public String toString() {
   return Objects.toStringHelper(this)
        .add("name", name)
        .add("age", age)
        .add("score", score)
        .toString();
  }
  @Override
  public int hashCode() {
   return Objects.hashCode(name, age);
  }
  @Override
  public boolean equals(Object obj) {
   if (obj instanceof Student) {
             Student that = (Student) obj;
             return Objects.equal(name, that.name)
                     && Objects.equal(age, that.age)
                     && Objects.equal(score, that.score);
         }
         return false;
  }
  @Override
  public int compareTo(Student student) {
   return ComparisonChain.start()
          .compare(this.name, student.name)
          .compare(this.age, student.age)
          .compare(this.score, student.score)
          .result();
  }
 }
}
分享到:
评论

相关推荐

    java常用工具类整理

    Java常用工具类整理 本文将详细介绍 Spring 及 Guava 相关工具类的使用说明和代码 demo。这些工具类都是 Java 开发中常用的实用工具,可以帮助开发者快速高效地完成各种任务。 一、Spring 工具类 1. org.spring...

    工作11年总结的常用java工具类,上百种方法,开发中绝对用得到

    以上只是部分常见的Java工具类及其重要方法,实际上还有许多其他库和工具类,如Apache HttpClient、Google Guice、Apache Commons Codec等,它们都在各自的领域提供了强大的功能。在实际开发中,根据项目需求选择...

    java学习资源知识点整理

    - **Guava**:Google提供的Java库,包含大量常用的工具类和数据结构。 9. **面试准备** - **集合框架**:深入理解集合类的特性,如ArrayList与LinkedList的性能差异,以及在多线程环境下的选择。 - **IO框架**:...

    java开发常用的jar包整理

    5. **Apache Commons**:Apache Commons是Apache软件基金会的一个项目,提供了大量实用工具类,如IO、Lang、Collections、Codec等,极大地丰富了Java的标准库。 6. **Log4j**:Log4j是Java的日志框架,用于记录应用...

    java开发各种jar包分类

    例如,`log4j.jar`用于日志记录,`slf4j-api.jar`和相应的实现库用于更高级的日志抽象,`commons-lang3.jar`提供了很多实用的工具类,`guava.jar`是Google提供的大量常用工具类库。 在实际开发中,根据项目需求,...

    整理了一个关于网上java问与答的一个手册

    2. Guava:Google的工具库,包含丰富的数据结构、并发工具、缓存机制等。 以上只是Java编程的一部分知识点,实际开发中还需要理解设计模式、数据库操作、框架应用、测试技巧等多个方面。不断学习和实践,才能真正...

    Java常用的插件API整理以及基于JDK的一些方法封装库.zip

    1. Apache Commons Lang:这个库提供了许多实用的工具类,如字符串处理、日期时间操作、数学函数等,增强了JDK的内置功能。 2. Guava:Google推出的高效库,包含集合、缓存、并发、I/O等多方面工具,尤其在处理并发...

    java_常用jar包整理.rar

    11. **Guava**: Guava 是Google提供的一个Java库,包含了大量的系统级别的实用工具类,如集合、并发、缓存、I/O等。 12. **JUnit.jupiter**: 这是JUnit 5的新测试引擎,提供了更现代的测试API和更灵活的测试配置。 ...

    java常用jar包集合

    11. **Guava库**:guava.jar,Google提供的一个强大的Java工具库,包含了大量的实用工具类。 12. **Apache Ant**:ant.jar,是Java的构建工具,类似于Make或NPM,用于自动化构建过程。 13. **Apache Maven**:...

    黑马20天学java视频看完后整理的思维导图

    13. **Java API和库**:介绍常用API,如Math、Date、Calendar,以及第三方库如Apache Commons或Google Guava的使用。 14. **设计模式**:可能涵盖了单例、工厂、观察者、装饰器等常见设计模式的概念和应用场景。 ...

    我整理的java代码库,使用eclipse工程方式展现

    15. **并发工具类**:Java并发包(java.util.concurrent)提供了许多高级并发工具,如Semaphore、CountDownLatch、CyclicBarrier等,有助于编写高效的多线程代码。 这个Java代码库是一个宝贵的资源,不仅涵盖了Java...

    java相关jar包.zip

    3. **Apache Commons**:如commons-lang3.jar,提供了许多实用的工具类,增强Java语言的功能,如字符串处理、日期时间操作等。 4. **Log4j**:log4j.jar,是一个流行的日志记录框架,用于记录程序运行中的各种信息...

    一些Java 编程语言的优秀框架、库和软件的精选列表代码

    15. **Guava**:Google提供的Guava库包含了大量Java集合框架的扩展,如Multimap、Multiset、Immutable collections等,以及并发、缓存、I/O、字符串处理等方面的工具类。 以上只是一部分Java生态系统中的杰出代表,...

    awesome-java:精选的Java编程语言框架,库和软件清单

    Apache Commons是另一个重要的库集合,提供了大量实用工具类,如IO、Lang和Math等模块。 3. **测试工具的不可或缺** 在"awesome-java"清单中,JUnit作为最流行的单元测试框架,是Java开发者必备的工具,而Mockito...

Global site tag (gtag.js) - Google Analytics