mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-05-09 23:51:34 +08:00
fix code
This commit is contained in:
parent
fb285ed20b
commit
3a08a399da
@ -685,6 +685,7 @@ public class ListUtil {
|
|||||||
* @param otherList 其它列表
|
* @param otherList 其它列表
|
||||||
* @return 此列表
|
* @return 此列表
|
||||||
*/
|
*/
|
||||||
|
@SuppressWarnings("UnusedReturnValue")
|
||||||
public static <T> List<T> addAllIfNotContains(final List<T> list, final List<T> otherList) {
|
public static <T> List<T> addAllIfNotContains(final List<T> list, final List<T> otherList) {
|
||||||
for (final T t : otherList) {
|
for (final T t : otherList) {
|
||||||
if (false == list.contains(t)) {
|
if (false == list.contains(t)) {
|
||||||
@ -695,12 +696,13 @@ public class ListUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* 通过删除或替换现有元素或者原地添加新的元素来修改列表,并以列表形式返回被修改的内容。此方法不会改变原列表。
|
||||||
* 类似js的<a href="https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/splice">splice</a>函数
|
* 类似js的<a href="https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/splice">splice</a>函数
|
||||||
*
|
*
|
||||||
* @param start 起始下标, 可以为负数, -1代表最后一个元素
|
* @param start 指定修改的开始位置(从 0 计数), 可以为负数, -1代表最后一个元素
|
||||||
* @param deleteCount 删除个数,必须是正整数
|
* @param deleteCount 删除个数,必须是正整数
|
||||||
* @param items 放入值
|
* @param items 放入的元素
|
||||||
* @return 操作后的流
|
* @return 结果列表
|
||||||
* @since 6.0.0
|
* @since 6.0.0
|
||||||
*/
|
*/
|
||||||
@SafeVarargs
|
@SafeVarargs
|
||||||
|
@ -137,7 +137,7 @@ public class Opt<T> {
|
|||||||
*/
|
*/
|
||||||
@SuppressWarnings("OptionalUsedAsFieldOrParameterType")
|
@SuppressWarnings("OptionalUsedAsFieldOrParameterType")
|
||||||
public static <T> Opt<T> of(Optional<T> optional) {
|
public static <T> Opt<T> of(Optional<T> optional) {
|
||||||
return ofNullable(optional).flattedMap(Function.identity());
|
return ofNullable(optional.orElse(null));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1063,13 +1063,10 @@ public class Validator {
|
|||||||
Assert.notNull(value);
|
Assert.notNull(value);
|
||||||
Assert.notNull(start);
|
Assert.notNull(start);
|
||||||
Assert.notNull(end);
|
Assert.notNull(end);
|
||||||
int c1 = DateUtil.compare(value, start);
|
|
||||||
int c2 = DateUtil.compare(value, end);
|
|
||||||
|
|
||||||
if(c1 >= 0 && c2 <= 0){
|
if(false == DateUtil.isIn(value, start, end)){
|
||||||
return;
|
throw new ValidateException(errorMsg);
|
||||||
}
|
}
|
||||||
throw new ValidateException(errorMsg);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
package cn.hutool.core.lang.mutable;
|
package cn.hutool.core.lang.mutable;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.function.Consumer;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 可变{@code Object}
|
* 可变{@code Object}
|
||||||
@ -9,7 +8,7 @@ import java.util.function.Consumer;
|
|||||||
* @param <T> 可变的类型
|
* @param <T> 可变的类型
|
||||||
* @since 3.0.1
|
* @since 3.0.1
|
||||||
*/
|
*/
|
||||||
public class MutableObj<T> implements Mutable<T>, Serializable, Consumer<T> {
|
public class MutableObj<T> implements Mutable<T>, Serializable{
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -51,17 +50,6 @@ public class MutableObj<T> implements Mutable<T>, Serializable, Consumer<T> {
|
|||||||
this.value = value;
|
this.value = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 消费元素
|
|
||||||
*
|
|
||||||
* @param t t
|
|
||||||
* @since 6.0.0
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public void accept(T t) {
|
|
||||||
this.value = t;
|
|
||||||
}
|
|
||||||
|
|
||||||
// -----------------------------------------------------------------------
|
// -----------------------------------------------------------------------
|
||||||
@Override
|
@Override
|
||||||
public boolean equals(final Object obj) {
|
public boolean equals(final Object obj) {
|
||||||
|
@ -938,7 +938,7 @@ public class FastStream<T> implements Stream<T>, Iterable<T> {
|
|||||||
*/
|
*/
|
||||||
public Optional<T> findLast() {
|
public Optional<T> findLast() {
|
||||||
MutableObj<T> last = new MutableObj<>(null);
|
MutableObj<T> last = new MutableObj<>(null);
|
||||||
spliterator().forEachRemaining(last);
|
spliterator().forEachRemaining(last::set);
|
||||||
return Optional.ofNullable(last.get());
|
return Optional.ofNullable(last.get());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1226,7 +1226,7 @@ public class FastStream<T> implements Stream<T>, Iterable<T> {
|
|||||||
// 保存第二个Spliterator的值
|
// 保存第二个Spliterator的值
|
||||||
MutableObj<R> value = new MutableObj<>();
|
MutableObj<R> value = new MutableObj<>();
|
||||||
// 当两个Spliterator中都还有剩余元素时
|
// 当两个Spliterator中都还有剩余元素时
|
||||||
while (keys.tryAdvance(key) && values.tryAdvance(value)) {
|
while (keys.tryAdvance(key::set) && values.tryAdvance(value::set)) {
|
||||||
map.put(key.get(), value.get());
|
map.put(key.get(), value.get());
|
||||||
}
|
}
|
||||||
return map;
|
return map;
|
||||||
@ -1394,7 +1394,7 @@ public class FastStream<T> implements Stream<T>, Iterable<T> {
|
|||||||
// 保存第二个Spliterator的值
|
// 保存第二个Spliterator的值
|
||||||
MutableObj<U> value = new MutableObj<>();
|
MutableObj<U> value = new MutableObj<>();
|
||||||
// 当两个Spliterator中都还有剩余元素时
|
// 当两个Spliterator中都还有剩余元素时
|
||||||
while (keys.tryAdvance(key) && values.tryAdvance(value)) {
|
while (keys.tryAdvance(key::set) && values.tryAdvance(value::set)) {
|
||||||
list.add(zipper.apply(key.get(), value.get()));
|
list.add(zipper.apply(key.get(), value.get()));
|
||||||
}
|
}
|
||||||
return of(list).parallel(isParallel()).onClose(stream::close);
|
return of(list).parallel(isParallel()).onClose(stream::close);
|
||||||
|
@ -6,8 +6,12 @@ import cn.hutool.core.tree.parser.NodeParser;
|
|||||||
import cn.hutool.core.util.ObjUtil;
|
import cn.hutool.core.util.ObjUtil;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Objects;
|
||||||
|
import java.util.Queue;
|
||||||
|
import java.util.Stack;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 树工具类
|
* 树工具类
|
||||||
@ -245,7 +249,7 @@ public class TreeUtil {
|
|||||||
* @return 森林所有节点列表
|
* @return 森林所有节点列表
|
||||||
*/
|
*/
|
||||||
public static <E> List<Tree<E>> deepFirstForestConvertToList(List<Tree<E>> forest) {
|
public static <E> List<Tree<E>> deepFirstForestConvertToList(List<Tree<E>> forest) {
|
||||||
if (CollectionUtil.isEmpty(forest)) {
|
if (CollUtil.isEmpty(forest)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
List<Tree<E>> list = new ArrayList<>();
|
List<Tree<E>> list = new ArrayList<>();
|
||||||
@ -261,7 +265,7 @@ public class TreeUtil {
|
|||||||
* @return 森林所有节点列表
|
* @return 森林所有节点列表
|
||||||
*/
|
*/
|
||||||
public static <E> List<Tree<E>> broadFirstForestConvertToList(List<Tree<E>> forest) {
|
public static <E> List<Tree<E>> broadFirstForestConvertToList(List<Tree<E>> forest) {
|
||||||
if (CollectionUtil.isEmpty(forest)) {
|
if (CollUtil.isEmpty(forest)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
List<Tree<E>> list = new ArrayList<>();
|
List<Tree<E>> list = new ArrayList<>();
|
||||||
@ -297,7 +301,7 @@ public class TreeUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 深度优先,遍历树,将树转换为数组
|
* 广度优先,遍历树,将树转换为数组
|
||||||
*
|
*
|
||||||
* @param root 树的根节点
|
* @param root 树的根节点
|
||||||
* @param <E> 节点ID类型
|
* @param <E> 节点ID类型
|
||||||
|
@ -15,6 +15,7 @@ import java.util.Arrays;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.concurrent.CopyOnWriteArrayList;
|
||||||
|
|
||||||
public class ListUtilTest {
|
public class ListUtilTest {
|
||||||
|
|
||||||
@ -266,4 +267,16 @@ public class ListUtilTest {
|
|||||||
ListUtil.setOrPadding(list, 3, "a");
|
ListUtil.setOrPadding(list, 3, "a");
|
||||||
Assert.assertEquals(4, list.size());
|
Assert.assertEquals(4, list.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void ofCopyOnWriteTest(){
|
||||||
|
final CopyOnWriteArrayList<String> strings = ListUtil.ofCopyOnWrite(ListUtil.of("a", "b"));
|
||||||
|
Assert.assertEquals(2, strings.size());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void ofCopyOnWriteTest2(){
|
||||||
|
final CopyOnWriteArrayList<String> strings = ListUtil.ofCopyOnWrite("a", "b");
|
||||||
|
Assert.assertEquals(2, strings.size());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user