From decd6a14609c315bd98336492bb94bd2994514a0 Mon Sep 17 00:00:00 2001 From: liuhuan Date: Fri, 3 Jan 2020 09:46:03 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8C=BF=E5=90=8D=E7=B1=BB=E6=9B=BF=E6=8D=A2?= =?UTF-8?q?=E4=B8=BAlambda=E8=A1=A8=E8=BE=BE=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/hutool/cache/impl/TimedCache.java | 11 ++---- .../cn/hutool/core/collection/IterUtil.java | 18 ++------- .../java/cn/hutool/core/date/DateRange.java | 18 ++++----- .../java/cn/hutool/core/date/SystemClock.java | 19 +++------- .../core/io/watch/watchers/DelayWatcher.java | 21 +++++------ .../cn/hutool/core/lang/ConsistentHash.java | 14 +++---- .../cn/hutool/core/lang/JarClassLoader.java | 22 ++++------- .../java/cn/hutool/core/lang/Validator.java | 29 ++++----------- .../core/thread/ThreadFactoryBuilder.java | 37 +++++++++---------- .../main/java/cn/hutool/core/util/ReUtil.java | 21 +++-------- .../java/cn/hutool/dfa/SensitiveUtil.java | 17 +++------ 11 files changed, 76 insertions(+), 151 deletions(-) diff --git a/hutool-cache/src/main/java/cn/hutool/cache/impl/TimedCache.java b/hutool-cache/src/main/java/cn/hutool/cache/impl/TimedCache.java index a5677083f..03add0533 100644 --- a/hutool-cache/src/main/java/cn/hutool/cache/impl/TimedCache.java +++ b/hutool-cache/src/main/java/cn/hutool/cache/impl/TimedCache.java @@ -1,12 +1,12 @@ package cn.hutool.cache.impl; +import cn.hutool.cache.GlobalPruneTimer; + import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.concurrent.ScheduledFuture; -import cn.hutool.cache.GlobalPruneTimer; - /** * 定时缓存
* 此缓存没有容量限制,对象只有在过期后才会被移除 @@ -72,12 +72,7 @@ public class TimedCache extends AbstractCache { * @param delay 间隔时长,单位毫秒 */ public void schedulePrune(long delay) { - this.pruneJobFuture = GlobalPruneTimer.INSTANCE.schedule(new Runnable() { - @Override - public void run() { - prune(); - } - }, delay); + this.pruneJobFuture = GlobalPruneTimer.INSTANCE.schedule(this::prune, delay); } /** diff --git a/hutool-core/src/main/java/cn/hutool/core/collection/IterUtil.java b/hutool-core/src/main/java/cn/hutool/core/collection/IterUtil.java index 9d86a8892..c5177f314 100644 --- a/hutool-core/src/main/java/cn/hutool/core/collection/IterUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/collection/IterUtil.java @@ -1,19 +1,14 @@ package cn.hutool.core.collection; -import java.util.ArrayList; -import java.util.Enumeration; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; - import cn.hutool.core.lang.Filter; import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.ReflectUtil; import cn.hutool.core.util.StrUtil; +import java.util.*; +import java.util.Map.Entry; + /** * {@link Iterable} 和 {@link Iterator} 相关工具类 * @@ -511,12 +506,7 @@ public class IterUtil { * @return {@link Iterable} */ public static Iterable asIterable(final Iterator iter) { - return new Iterable() { - @Override - public Iterator iterator() { - return iter; - } - }; + return () -> iter; } /** diff --git a/hutool-core/src/main/java/cn/hutool/core/date/DateRange.java b/hutool-core/src/main/java/cn/hutool/core/date/DateRange.java index e756f3516..095c002fa 100644 --- a/hutool-core/src/main/java/cn/hutool/core/date/DateRange.java +++ b/hutool-core/src/main/java/cn/hutool/core/date/DateRange.java @@ -1,9 +1,9 @@ package cn.hutool.core.date; -import java.util.Date; - import cn.hutool.core.lang.Range; +import java.util.Date; + /** * 日期范围 * @@ -47,16 +47,12 @@ public class DateRange extends Range { * @param isIncludeEnd 是否包含结束的时间 */ public DateRange(Date start, Date end, final DateField unit, final int step, boolean isIncludeStart, boolean isIncludeEnd) { - super(DateUtil.date(start), DateUtil.date(end), new Steper() { - - @Override - public DateTime step(DateTime current, DateTime end, int index) { - DateTime dt = current.offsetNew(unit, step); - if (dt.isAfter(end)) { - return null; - } - return current.offsetNew(unit, step); + super(DateUtil.date(start), DateUtil.date(end), (current, end1, index) -> { + DateTime dt = current.offsetNew(unit, step); + if (dt.isAfter(end1)) { + return null; } + return current.offsetNew(unit, step); }, isIncludeStart, isIncludeEnd); } diff --git a/hutool-core/src/main/java/cn/hutool/core/date/SystemClock.java b/hutool-core/src/main/java/cn/hutool/core/date/SystemClock.java index 12cbbd5dc..d70842140 100644 --- a/hutool-core/src/main/java/cn/hutool/core/date/SystemClock.java +++ b/hutool-core/src/main/java/cn/hutool/core/date/SystemClock.java @@ -3,7 +3,6 @@ package cn.hutool.core.date; import java.sql.Timestamp; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.ThreadFactory; import java.util.concurrent.TimeUnit; /** @@ -37,20 +36,12 @@ public class SystemClock { * 开启计时器线程 */ private void scheduleClockUpdating() { - ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor(new ThreadFactory(){ - @Override - public Thread newThread(Runnable runnable) { - Thread thread = new Thread(runnable, "System Clock"); - thread.setDaemon(true); - return thread; - } + ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor(runnable -> { + Thread thread = new Thread(runnable, "System Clock"); + thread.setDaemon(true); + return thread; }); - scheduler.scheduleAtFixedRate(new Runnable(){ - @Override - public void run() { - now = System.currentTimeMillis(); - } - }, period, period, TimeUnit.MILLISECONDS); + scheduler.scheduleAtFixedRate(() -> now = System.currentTimeMillis(), period, period, TimeUnit.MILLISECONDS); } /** diff --git a/hutool-core/src/main/java/cn/hutool/core/io/watch/watchers/DelayWatcher.java b/hutool-core/src/main/java/cn/hutool/core/io/watch/watchers/DelayWatcher.java index 88e839a8f..f1b39c98e 100644 --- a/hutool-core/src/main/java/cn/hutool/core/io/watch/watchers/DelayWatcher.java +++ b/hutool-core/src/main/java/cn/hutool/core/io/watch/watchers/DelayWatcher.java @@ -1,16 +1,16 @@ package cn.hutool.core.io.watch.watchers; +import cn.hutool.core.collection.ConcurrentHashSet; +import cn.hutool.core.io.watch.Watcher; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.thread.ThreadUtil; + import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.WatchEvent; import java.nio.file.WatchService; import java.util.Set; -import cn.hutool.core.collection.ConcurrentHashSet; -import cn.hutool.core.io.watch.Watcher; -import cn.hutool.core.lang.Assert; -import cn.hutool.core.thread.ThreadUtil; - /** * 延迟观察者
* 使用此观察者通过定义一定的延迟时间,解决{@link WatchService}多个modify的问题
@@ -95,13 +95,10 @@ public class DelayWatcher implements Watcher { * @param currentPath 事件发生的当前Path路径 */ private void startHandleModifyThread(final WatchEvent event, final Path currentPath) { - ThreadUtil.execute(new Runnable(){ - @Override - public void run() { - ThreadUtil.sleep(delay); - eventSet.remove(Paths.get(currentPath.toString(), event.context().toString())); - watcher.onModify(event, currentPath); - } + ThreadUtil.execute(() -> { + ThreadUtil.sleep(delay); + eventSet.remove(Paths.get(currentPath.toString(), event.context().toString())); + watcher.onModify(event, currentPath); }); } //---------------------------------------------------------------------------------------------------------- Private method end diff --git a/hutool-core/src/main/java/cn/hutool/core/lang/ConsistentHash.java b/hutool-core/src/main/java/cn/hutool/core/lang/ConsistentHash.java index 06194c5d5..0b426065b 100644 --- a/hutool-core/src/main/java/cn/hutool/core/lang/ConsistentHash.java +++ b/hutool-core/src/main/java/cn/hutool/core/lang/ConsistentHash.java @@ -1,12 +1,12 @@ package cn.hutool.core.lang; +import cn.hutool.core.util.HashUtil; + import java.io.Serializable; import java.util.Collection; import java.util.SortedMap; import java.util.TreeMap; -import cn.hutool.core.util.HashUtil; - /** * 一致性Hash算法 * 算法详解:http://blog.csdn.net/sparkliang/article/details/5279393 @@ -32,13 +32,9 @@ public class ConsistentHash implements Serializable{ */ public ConsistentHash(int numberOfReplicas, Collection nodes) { this.numberOfReplicas = numberOfReplicas; - this.hashFunc = new HashFunc() { - - @Override - public Integer hash(Object key) { - //默认使用FNV1hash算法 - return HashUtil.fnvHash(key.toString()); - } + this.hashFunc = key -> { + //默认使用FNV1hash算法 + return HashUtil.fnvHash(key.toString()); }; //初始化节点 for (T node : nodes) { diff --git a/hutool-core/src/main/java/cn/hutool/core/lang/JarClassLoader.java b/hutool-core/src/main/java/cn/hutool/core/lang/JarClassLoader.java index d73a60444..0ae55f932 100644 --- a/hutool-core/src/main/java/cn/hutool/core/lang/JarClassLoader.java +++ b/hutool-core/src/main/java/cn/hutool/core/lang/JarClassLoader.java @@ -1,19 +1,18 @@ package cn.hutool.core.lang; -import java.io.File; -import java.io.FileFilter; -import java.io.IOException; -import java.lang.reflect.Method; -import java.net.URL; -import java.net.URLClassLoader; -import java.util.List; - import cn.hutool.core.exceptions.UtilException; import cn.hutool.core.io.FileUtil; import cn.hutool.core.util.ClassUtil; import cn.hutool.core.util.ReflectUtil; import cn.hutool.core.util.URLUtil; +import java.io.File; +import java.io.IOException; +import java.lang.reflect.Method; +import java.net.URL; +import java.net.URLClassLoader; +import java.util.List; + /** * 外部Jar的类加载器 * @@ -143,12 +142,7 @@ public class JarClassLoader extends URLClassLoader { * @return jar文件列表 */ private static List loopJar(File file) { - return FileUtil.loopFiles(file, new FileFilter() { - @Override - public boolean accept(File file) { - return isJarFile(file); - } - }); + return FileUtil.loopFiles(file, JarClassLoader::isJarFile); } /** diff --git a/hutool-core/src/main/java/cn/hutool/core/lang/Validator.java b/hutool-core/src/main/java/cn/hutool/core/lang/Validator.java index 0dacfd82d..81a2d572b 100644 --- a/hutool-core/src/main/java/cn/hutool/core/lang/Validator.java +++ b/hutool-core/src/main/java/cn/hutool/core/lang/Validator.java @@ -1,9 +1,5 @@ package cn.hutool.core.lang; -import java.net.MalformedURLException; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - import cn.hutool.core.date.DateUtil; import cn.hutool.core.exceptions.ValidateException; import cn.hutool.core.util.NumberUtil; @@ -11,6 +7,10 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ReUtil; import cn.hutool.core.util.StrUtil; +import java.net.MalformedURLException; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + /** * 字段验证器 * @@ -465,12 +465,7 @@ public class Validator { * @since 3.3.0 */ public static boolean isLetter(CharSequence value) { - return StrUtil.isAllCharMatch(value, new cn.hutool.core.lang.Matcher() { - @Override - public boolean match(Character t) { - return Character.isLetter(t); - } - }); + return StrUtil.isAllCharMatch(value, Character::isLetter); } /** @@ -498,12 +493,7 @@ public class Validator { * @since 3.3.0 */ public static boolean isUpperCase(CharSequence value) { - return StrUtil.isAllCharMatch(value, new cn.hutool.core.lang.Matcher() { - @Override - public boolean match(Character t) { - return Character.isUpperCase(t); - } - }); + return StrUtil.isAllCharMatch(value, Character::isUpperCase); } /** @@ -531,12 +521,7 @@ public class Validator { * @since 3.3.0 */ public static boolean isLowerCase(CharSequence value) { - return StrUtil.isAllCharMatch(value, new cn.hutool.core.lang.Matcher() { - @Override - public boolean match(Character t) { - return Character.isLowerCase(t); - } - }); + return StrUtil.isAllCharMatch(value, Character::isLowerCase); } /** diff --git a/hutool-core/src/main/java/cn/hutool/core/thread/ThreadFactoryBuilder.java b/hutool-core/src/main/java/cn/hutool/core/thread/ThreadFactoryBuilder.java index 7fb73f78c..e8a8cfd31 100644 --- a/hutool-core/src/main/java/cn/hutool/core/thread/ThreadFactoryBuilder.java +++ b/hutool-core/src/main/java/cn/hutool/core/thread/ThreadFactoryBuilder.java @@ -1,13 +1,13 @@ package cn.hutool.core.thread; +import cn.hutool.core.builder.Builder; +import cn.hutool.core.util.StrUtil; + import java.lang.Thread.UncaughtExceptionHandler; import java.util.concurrent.Executors; import java.util.concurrent.ThreadFactory; import java.util.concurrent.atomic.AtomicLong; -import cn.hutool.core.builder.Builder; -import cn.hutool.core.util.StrUtil; - /** * ThreadFactory创建器
* 参考:Guava的ThreadFactoryBuilder @@ -125,24 +125,21 @@ public class ThreadFactoryBuilder implements Builder{ final Integer priority = builder.priority; final UncaughtExceptionHandler handler = builder.uncaughtExceptionHandler; final AtomicLong count = (null == namePrefix) ? null : new AtomicLong(); - return new ThreadFactory() { - @Override - public Thread newThread(Runnable r) { - final Thread thread = backingThreadFactory.newThread(r); - if (null != namePrefix) { - thread.setName(namePrefix + count.getAndIncrement()); - } - if (null != daemon) { - thread.setDaemon(daemon); - } - if (null != priority) { - thread.setPriority(priority); - } - if (null != handler) { - thread.setUncaughtExceptionHandler(handler); - } - return thread; + return r -> { + final Thread thread = backingThreadFactory.newThread(r); + if (null != namePrefix) { + thread.setName(namePrefix + count.getAndIncrement()); } + if (null != daemon) { + thread.setDaemon(daemon); + } + if (null != priority) { + thread.setPriority(priority); + } + if (null != handler) { + thread.setUncaughtExceptionHandler(handler); + } + return thread; }; } } diff --git a/hutool-core/src/main/java/cn/hutool/core/util/ReUtil.java b/hutool-core/src/main/java/cn/hutool/core/util/ReUtil.java index ae7e72349..409b8a552 100644 --- a/hutool-core/src/main/java/cn/hutool/core/util/ReUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/util/ReUtil.java @@ -1,15 +1,5 @@ package cn.hutool.core.util; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Comparator; -import java.util.HashSet; -import java.util.List; -import java.util.Set; -import java.util.TreeSet; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.exceptions.UtilException; @@ -18,6 +8,10 @@ import cn.hutool.core.lang.PatternPool; import cn.hutool.core.lang.Validator; import cn.hutool.core.lang.func.Func1; +import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + /** * 正则相关工具类
* 常用正则请见 {@link Validator} @@ -174,12 +168,7 @@ public class ReUtil { } //提取模板中的编号 - final TreeSet varNums = new TreeSet<>(new Comparator() { - @Override - public int compare(Integer o1, Integer o2) { - return ObjectUtil.compare(o2, o1); - } - }); + final TreeSet varNums = new TreeSet<>((o1, o2) -> ObjectUtil.compare(o2, o1)); final Matcher matcherForTemplate = PatternPool.GROUP_VAR.matcher(template); while (matcherForTemplate.find()) { varNums.add(Integer.parseInt(matcherForTemplate.group(1))); diff --git a/hutool-dfa/src/main/java/cn/hutool/dfa/SensitiveUtil.java b/hutool-dfa/src/main/java/cn/hutool/dfa/SensitiveUtil.java index 16e49c8a9..8fbfa476e 100644 --- a/hutool-dfa/src/main/java/cn/hutool/dfa/SensitiveUtil.java +++ b/hutool-dfa/src/main/java/cn/hutool/dfa/SensitiveUtil.java @@ -1,13 +1,12 @@ package cn.hutool.dfa; -import java.util.Collection; -import java.util.List; -import java.util.concurrent.Callable; - import cn.hutool.core.thread.ThreadUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; +import java.util.Collection; +import java.util.List; + /** * 敏感词工具类 * @author Looly @@ -33,13 +32,9 @@ public final class SensitiveUtil { */ public static void init(final Collection sensitiveWords, boolean isAsync){ if(isAsync){ - ThreadUtil.execAsync(new Callable(){ - @Override - public Boolean call() throws Exception { - init(sensitiveWords); - return true; - } - + ThreadUtil.execAsync(() -> { + init(sensitiveWords); + return true; }); }else{ init(sensitiveWords);