工作时间久了,总感觉生活缺少了点什么!感觉自己都没有写过博客的习惯!人生总要留下一抹美好的东西!下面开始我们的博客之旅!
一、本地缓存的特性、字符串操作、集合排序 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 MapcacheMap; static { cacheMap = Maps.newHashMap(); cacheMap.put("1", "测试数据啦~~"); } /** * 1、expireAfterWrite 过期时间的设定 本次我设置的是1ms (设置过期时间是为了释放内存空间,可根据自己的情况设置) * 2、如果本地如没有数据则调用load(String key)方法去拉取数据 3、 */ static com.google.common.cache.LoadingCache cahceBuilder = CacheBuilder.newBuilder() .expireAfterWrite(1, TimeUnit.MILLISECONDS).build(new CacheLoader () { @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 result = MY_SPLITTER.splitToList("1111111:222222"); result.forEach(rs -> System.out.println(rs)); // 集合排序 List 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 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 lists = Lists.newArrayList("1","2","3","3"); List s = ImmutableSet.copyOf(lists).asList(); System.out.println(s); //对象比较 sort 0:正序 1:倒序 List