guava的基本语法整理

guava的几个基本用法

package com.panther.base;

import com.google.common.base.CharMatcher;
import com.google.common.base.Joiner;
import com.google.common.base.Splitter;
import com.google.common.base.Stopwatch;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.concurrent.TimeUnit;

import static com.google.common.base.Preconditions.checkNotNull;

/**
 * guava的一些简单应用
 * 预先判断Preconditions
 * Object.toStringHelper()
 * Stopwatch(计时器)
 * CharMatcher(字符匹配)
 * String Joining 字符串连接
 * String Splitting字符串分割
 * Created by panther.dongdong on 2015/11/16.
 */
public class BaseTest {
    private static final Logger LOGGER = LoggerFactory.getLogger(BaseTest.class.getName());

    public static void main(final String[] args) {

        final Stopwatch stopwatch = Stopwatch.createUnstarted().start();
        LOGGER.info("原生类型判断开始");
        Double b = 2.0;
        setRating(b);
        LOGGER.info("原生类型判断结束");
        LOGGER.info("guava判断开始");
        setRatingGuava(b);
        LOGGER.info("guava判断结束");
        LOGGER.info("guava字符匹配开始");
        matchGuava();
        LOGGER.info("guava字符匹配结束");
        LOGGER.info("guava字符串连接接结束");
        joinGuava();
        LOGGER.info("guava字符串连接结束");
        LOGGER.info("guava字符串分割结束");
        splitGuava();
        LOGGER.info("guava字符串分割结束");
        LOGGER.info("Object.toStringHelper()测试开始");
        LOGGER.info(new Student().toString());
        LOGGER.info("Object.toStringHelper()测试结束");
        long nanos = stopwatch.elapsed(TimeUnit.MILLISECONDS);
        LOGGER.info("总共耗时:{}", nanos);
    }

    /**
     * 原生类型的判断
     *
     * @param rating double参数
     */
    public static void setRating(Double rating) {
        if (rating == null) {
            throw new NullPointerException();
        }
        LOGGER.info("r = {}", rating);
    }

    /**
     * 使用guava后代码更整洁
     *
     * @param rating double参数
     */
    public static void setRatingGuava(Double rating) {
        Double r = checkNotNull(rating);
        LOGGER.info("r = {}", r);
    }

    /**
     * guava字符匹配
     * todo see
     */
    public static void matchGuava() {
        String userInput = "nihao1234-1";
        CharMatcher ID_MATCHER = CharMatcher.DIGIT.or(CharMatcher.is('-')).or(CharMatcher.JAVA_LOWER_CASE);
        LOGGER.info(ID_MATCHER.retainFrom(userInput));
    }

    /**
     * 字符串链接
     * String Joining 字符串连接
     * 可以快速地把一组字符数组连接成为用特殊符合连接的一个字符串,
     * 如果这组字符中有null值的话,我们可以使用skipNulls或是useForNull来控制我们要输出的内容。
     */
    public static void joinGuava() {
        Joiner JOINER = Joiner.on(",").useForNull("null");
        Joiner JOINER1 = Joiner.on(",").skipNulls();

        String str = JOINER.join("hello", "world", null, "qiyadeng");
        String str1 = JOINER1.join("hello", "world", null, "qiyadeng");

        //hello,world,null,qiyadeng
        LOGGER.info("str is : {}", str);
        LOGGER.info("str1(不带null) is : {}", str1);
    }

    /**
     * String Splitting字符串分割
     * 有这样一组字符串”hello,,qiyadeng,com,”
     * 我们用split(“,”)分割字符串,
     * 得到的结果是["hello","","qiyaeng","com"]
     * ,但是我们如果希望的是把空值去掉,还需要另外处理,
     * 使用guava的Splitter可以简单做到。
     */

    public static void splitGuava() {
        Iterable<String> splitStr = Splitter.on(',').trimResults().omitEmptyStrings().split("hello,,qiyadeng,com");
        for (String string : splitStr) {
            LOGGER.info(string);
        }
    }
}

/**
 * guava中的计时器
 * Stopwatch stopwatch = new Stopwatch().start();
 * //do something test
 * for (int i = 0; i < 10000; i++) {
 * }
 * long nanos = stopwatch.elapsed(TimeUnit.NANOSECONDS);
 * System.out.println(nanos);
 */

测试demo类:

package com.panther.base;

import com.google.common.base.Objects;

/**
 * 测试Object.toStringHelper()的pojo
 * Created by panther.dongdong on 2015/11/16.
 */
public class Student {
    private int id;
    private String name;
    private String sex;
    private int age;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return Objects.toStringHelper(this).add("id", id)
                .add("name", name)
                .add("sex", sex)
                .add("age", age)
                .omitNullValues()
                .toString();
    }
}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值