mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-07-21 15:09:48 +08:00
add isEqualList方法
This commit is contained in:
@@ -8,6 +8,7 @@
|
|||||||
### 新特性
|
### 新特性
|
||||||
* 【poi 】 重要:不再兼容POI-3.x,增加兼容POI-5.x(issue#I35J6B@Gitee)
|
* 【poi 】 重要:不再兼容POI-3.x,增加兼容POI-5.x(issue#I35J6B@Gitee)
|
||||||
* 【core 】 FileTypeUtil使用长匹配优先(pr#1457@Github)
|
* 【core 】 FileTypeUtil使用长匹配优先(pr#1457@Github)
|
||||||
|
* 【core 】 IterUtil和CollUtil增加isEqualList方法(issue#I3A3PY@Gitee)
|
||||||
|
|
||||||
### Bug修复
|
### Bug修复
|
||||||
* 【socket 】 修复Client创建失败资源未释放问题。
|
* 【socket 】 修复Client创建失败资源未释放问题。
|
||||||
|
@@ -2988,4 +2988,25 @@ public class CollUtil {
|
|||||||
}
|
}
|
||||||
return total;
|
return total;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 判断两个{@link Collection} 是否元素和顺序相同,返回{@code true}的条件是:
|
||||||
|
* <ul>
|
||||||
|
* <li>两个{@link Collection}必须长度相同</li>
|
||||||
|
* <li>两个{@link Collection}元素相同index的对象必须equals,满足{@link Objects#equals(Object, Object)}</li>
|
||||||
|
* </ul>
|
||||||
|
* 此方法来自Apache-Commons-Collections4。
|
||||||
|
*
|
||||||
|
* @param list1 列表1
|
||||||
|
* @param list2 列表2
|
||||||
|
* @return 是否相同
|
||||||
|
* @since 5.6.0
|
||||||
|
*/
|
||||||
|
public static boolean isEqualList(final Collection<?> list1, final Collection<?> list2) {
|
||||||
|
if (list1 == null || list2 == null || list1.size() != list2.size()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return IterUtil.isEqualList(list1, list2);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -18,6 +18,7 @@ import java.util.Iterator;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
|
import java.util.Objects;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -612,7 +613,7 @@ public class IterUtil {
|
|||||||
/**
|
/**
|
||||||
* Enumeration转换为Iterator
|
* Enumeration转换为Iterator
|
||||||
* <p>
|
* <p>
|
||||||
* Adapt the specified <code>Enumeration</code> to the <code>Iterator</code> interface
|
* Adapt the specified {@code Enumeration} to the {@code Iterator} interface
|
||||||
*
|
*
|
||||||
* @param <E> 集合元素类型
|
* @param <E> 集合元素类型
|
||||||
* @param e {@link Enumeration}
|
* @param e {@link Enumeration}
|
||||||
@@ -859,4 +860,39 @@ public class IterUtil {
|
|||||||
}
|
}
|
||||||
return size;
|
return size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 判断两个{@link Iterable} 是否元素和顺序相同,返回{@code true}的条件是:
|
||||||
|
* <ul>
|
||||||
|
* <li>两个{@link Iterable}必须长度相同</li>
|
||||||
|
* <li>两个{@link Iterable}元素相同index的对象必须equals,满足{@link Objects#equals(Object, Object)}</li>
|
||||||
|
* </ul>
|
||||||
|
* 此方法来自Apache-Commons-Collections4。
|
||||||
|
*
|
||||||
|
* @param list1 列表1
|
||||||
|
* @param list2 列表2
|
||||||
|
* @return 是否相同
|
||||||
|
* @since 5.6.0
|
||||||
|
*/
|
||||||
|
public static boolean isEqualList(final Iterable<?> list1, final Iterable<?> list2) {
|
||||||
|
if (list1 == list2) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
final Iterator<?> it1 = list1.iterator();
|
||||||
|
final Iterator<?> it2 = list2.iterator();
|
||||||
|
Object obj1;
|
||||||
|
Object obj2;
|
||||||
|
while (it1.hasNext() && it2.hasNext()) {
|
||||||
|
obj1 = it1.next();
|
||||||
|
obj2 = it2.next();
|
||||||
|
|
||||||
|
if (false == Objects.equals(obj1, obj2)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 当两个Iterable长度不一致时返回false
|
||||||
|
return false == (it1.hasNext() || it2.hasNext());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user