Guava工具类

   工作时间久了,总感觉生活缺少了点什么!感觉自己都没有写过博客的习惯!人生总要留下一抹美好的东西!下面开始我们的博客之旅!大笑
一、本地缓存的特性、字符串操作、集合排序
package com.vertx.guava;

import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;

import com.alibaba.fastjson.JSONObject;
import com.google.common.base.CharMatcher;
import com.google.common.base.Joiner;
import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Lists;
import com.google.common.collect.Ordering;

import shaded.com.google.common.base.Splitter;
import shaded.com.google.common.collect.Maps;

/**
 * 
 * @author zhangjinyang
 */
public class LoadingCache {
    static Map<String, String> cacheMap;
    static {
        cacheMap = Maps.newHashMap();
        cacheMap.put("1", "测试数据啦~~");
    }
    /**
     * 1、expireAfterWrite 过期时间的设定 本次我设置的是1ms (设置过期时间是为了释放内存空间,可根据自己的情况设置)
     * 2、如果本地如没有数据则调用load(String key)方法去拉取数据 3、
     */
    static com.google.common.cache.LoadingCache<String, String> cahceBuilder = CacheBuilder.newBuilder()
            .expireAfterWrite(1, TimeUnit.MILLISECONDS).build(new CacheLoader<String, String>() {
                @Override
                public String load(String key) throws Exception {
                    System.out.println("数据失效了,我要从新拉取数据啦~~");
                    return cacheMap.get(key);
                }
            });

    @SuppressWarnings("unchecked")
    public static void main(String[] args) throws Exception {
        /***
         * 一、本地缓存
         */
        System.out.println("首次本地缓存中没有数据~~,必须要去拉取数据!");
        for (int i = 0; i < 100; i++) {
            System.out.println(i + "、" + cahceBuilder.get("1"));
        }
        /**
         * 二、字符串的操作
         */
        // 拼接字符串 Harry;Ron;Hermione
        Joiner joiner = Joiner.on(";").skipNulls();
        System.out.println(joiner.join("Harry", null, "Ron", "Hermione"));
        // 只保留数字字符 12123
        String digitStr = CharMatcher.DIGIT.retainFrom("hhhhh12123");
        System.out.println(digitStr);
        // 去除两端的空格,并把中间的连续空格替换成单个空格 ds ff 12123
        String spaced = CharMatcher.WHITESPACE.trimAndCollapseFrom("  ds  ff  12123  ", ' ');
        System.out.println(spaced);
        // 用*号替换所有数字 qretre*******jjjjj
        String noDigits = CharMatcher.JAVA_DIGIT.replaceFrom("qretre1233444jjjjj", "*");
        System.out.println(noDigits);
        // 剔除大写字母 vvvvv12123dfgs
        String lowerAndDigit = CharMatcher.JAVA_DIGIT.or(CharMatcher.JAVA_LOWER_CASE)
                .retainFrom("AAAAvvvvv12123dfgsDDDD");
        System.out.println(lowerAndDigit);
        // 剔除小写字母 AAAA12123DDDD
        String upperAndDigit = CharMatcher.JAVA_DIGIT.or(CharMatcher.JAVA_UPPER_CASE)
                .retainFrom("AAAAvvvvv12123dfgsDDDD");
        System.out.println(upperAndDigit);
        // 以这个:分割结果为list集合
        Splitter MY_SPLITTER = Splitter.on(':').trimResults().omitEmptyStrings();
        List<String> result = MY_SPLITTER.splitToList("1111111:222222");
        result.forEach(rs -> System.out.println(rs));

        // 集合排序
        List<Integer> numbers = Lists.newArrayList(5, 2, 1, 3, 6);
        // 结果 1, 2, 3, 5, 6
        System.out.println(Ordering.natural().sortedCopy(numbers));
        // 结果 6, 5, 3, 2, 1
        System.out.println(Ordering.natural().reverse().sortedCopy(numbers));
        // 结果 1
        System.out.println(Ordering.natural().min(numbers));
        // 结果 6,
        System.out.println(Ordering.natural().max(numbers));
        // 结果 6, 5, 3, 2, 1
        List<Integer> number = Lists.newArrayList(3, 1, 4, 5, null, 6);
        // 结果 6, 5, 3, 2, 1, null
        System.out.println(Ordering.natural().nullsLast().sortedCopy(number));
        // 结果 null 1, 2, 3, 5, 6
        System.out.println(Ordering.natural().nullsFirst().sortedCopy(number));
        //集合去重[1, 2, 3]
        List<String> lists = Lists.newArrayList("1","2","3","3"); 
        List<String> s = ImmutableSet.copyOf(lists).asList();
        System.out.println(s);
        
        //对象比较  sort 0:正序  1:倒序
        List<Map<String, String>> list = Lists.newArrayList(new HashMap<String, String>() {
            private static final long serialVersionUID = 6719918177505653747L;
            {
                put("1", "3");
            }
        }, new HashMap<String, String>() {
            private static final long serialVersionUID = 6719918177505653747L;
            {
                put("1", "1");
            }
        }, new HashMap<String, String>() {
            private static final long serialVersionUID = 6719918177505653747L;
            {
                put("1", "2");
            }
        }, new HashMap<String, String>() {
            private static final long serialVersionUID = 6719918177505653747L;
            {
                put("1", "4");
            }
        });
        int sort=0;
        Ordering<Map<String, String>> test = new Ordering<Map<String,String>>() {
            @Override
            public int compare(Map<String, String> left, Map<String, String> right) {
                if(sort==1){
                    return right.get("1").compareTo(left.get("1"));
                }
                return left.get("1").compareTo(right.get("1"));
            }
        };
        test.sortedCopy(list).stream().forEach(rs->System.out.println(rs));
    }
}

第一次写博客,写的不好多多包涵!大笑


                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值