CollectionUtils工具类

所以需要倒入相关jar包,目前从maven找到最新jar包如下:

  <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-collections4</artifactId>
        <version>4.3</version>
    </dependency>

常用方法

除非元素为null,否则向集合添加元素
CollectionUtils.addIgnoreNull(personList,null);
将两个已排序的集合a和b合并为一个已排序的列表,以便保留元素的自然顺序
CollectionUtils.collate(Iterable<? extends O> a, Iterable<? extends O> b)
将两个已排序的集合a和b合并到一个已排序的列表中,以便保留根据Comparator c的元素顺序。
CollectionUtils.collate(Iterable<? extends O> a, Iterable<? extends O> b, Comparator<? super O> c)
返回该个集合中是否含有至少有一个元素
CollectionUtils.containsAny(Collection<?> coll1, T... coll2)
如果参数是null,则返回不可变的空集合,否则返回参数本身。(很实用 ,最终返回List EMPTY_LIST = new EmptyList<>())
CollectionUtils.emptyIfNull(Collection<T> collection)
空安全检查指定的集合是否为空
CollectionUtils.isEmpty(Collection<?> coll)
空安全检查指定的集合是否为空。
CollectionUtils.isNotEmpty(Collection<?> coll)
反转给定数组的顺序。
CollectionUtils.reverseArray(Object[] array);
差集
CollectionUtils.subtract(Iterable<? extends O> a, Iterable<? extends O> b)
并集
CollectionUtils.union(Iterable<? extends O> a, Iterable<? extends O> b)
交集
CollectionUtils.intersection(Collection a, Collection b)
交集的补集(析取)
CollectionUtils.disjunction(Collection a, Collection b)

//添加数组数据到集合
String[] strArray = {"aaa", "bbb", "ccc"};
List strList = new ArrayList();
CollectionUtils.addAll(strList, strArray);

//添加集合数据到另一个集合
List<String> list = Arrays.asList(new String[]{"AAA", "BBB", "CCC"});
List<String> list1 = new ArrayList<>();
CollectionUtils.addAll(list1, list.iterator());

//删除元素集合
List<String> list1 = Arrays.asList(new String[]{"1", "4", "6", "7"});
List<String> list2 = Arrays.asList(new String[]{"6", "9"});
Collection collection = CollectionUtils.removeAll(list1, list2);

//返回集合2在集合1所存在的数据,返回的是一个新的集合
Collection collection = CollectionUtils.retainAll(list1, list2);

//数组反转
String[] arr = new String[]{"1", "4", "6", "7"};
CollectionUtils.reverseArray(arr);

//返回每个元素出现的个数
Map<String,String> cardinalityMap = CollectionUtils.getCardinalityMap(list1);

//返回对象在集合中出现的次数
int cardinality = CollectionUtils.cardinality("9", list2);

//获取集合、Map,数组指定索引处远处
Object o = CollectionUtils.get(list2, 3);

//对集合中某些些元素进行操作,并返回操作后的元素集合
Collection collect = CollectionUtils.collect(list2.iterator(), input -> {
return input += "a";
});

//对集合中某些些元素进行操作,并将操作后的元素封装带第3个参数集合中,第3个集合返回
Collection collect = CollectionUtils.collect(list2.iterator(), input -> {
return input += "a";
},new ArrayList());

//检查指定的collection / array / iterator是否为空。
CollectionUtils.sizeIsEmpty(new ArrayList<String>())

//判断两个集合是否相等
CollectionUtils.isEqualCollection(list1, list2);

//判断集合1是否小于集合2

List<Integer> testList = Arrays.asList(new Integer[]{1, 2, 3});
List<Integer> testList2 = new ArrayList<Integer>(0){
{
add(1);
}
};
CollectionUtils.isProperSubCollection(testList2,testList);

//判断集合1和集合2是否存在交集
List<Integer> testList = Arrays.asList(new Integer[]{1, 2, 3});
List<Integer> testList2 = new ArrayList<Integer>(0){
{
add(1);
}

};
CollectionUtils.isSubCollection(testList2, testList);

//判断两个集合是否存在交集
CollectionUtils.containsAny(list1, list2)

//条件过滤,如果testList为null,不进行任何操作
CollectionUtils.filter(testList, itm->{
return Integer.valueOf(itm.toString())>2;
});

//返回符合条件的个数
int resultMatchNum= CollectionUtils.countMatches(testList, itm->{
return Integer.valueOf(itm.toString())>1;
});

//判断是否存在符合条件的元素
boolean resultExists=CollectionUtils.exists(testList, itm->{
return Integer.valueOf(itm.toString())>2;
});

//返回符合条件的数据,注意:只返回一个
Object reusltFindObject=CollectionUtils.find(testList, itm->{
return Integer.valueOf(itm.toString())>1;
});

//返回符合条件的数据,返回一个集合
Collection resultSelect=CollectionUtils.select(testList, itm->{
return Integer.valueOf(itm.toString())>1;
});

//返回符合条件的数据,并封装到传入的集合中

List<Integer> testList2 = new ArrayList<Integer>(){
{
add(1);
}
};
CollectionUtils.select(testList, itm->{
return Integer.valueOf(itm.toString())>1;
}, testList2);

//和select结果相反,返回不符合条件的collection
Collection resultSelectReject=CollectionUtils.selectRejected(testList, itm->{
return Integer.valueOf(itm.toString())>1;
});

//和select结果相反,将不符合条件的元素,封装到传入的集合
List<Integer> testList2 = new ArrayList<Integer>(){
{
add(1);
}
};
Collection resultSelectReject=CollectionUtils.selectRejected(testList, itm->{
return Integer.valueOf(itm.toString())>1;
});

//断言,都符合返回集合,否则返回 java.lang.IllegalArgumentException 异常
Collection resultCollect=CollectionUtils.predicatedCollection(testList, itm->{
return Integer.valueOf(itm.toString())>1;
});

//对每个元素进行操作,操作直接影响传入的集合
CollectionUtils.transform(list1, input -> input+"@");

//返回同步的集合
Collection collection = CollectionUtils.synchronizedCollection(new ArrayList());

//对复制一份不可修改的集合,原集合改变,则集合改变,但复制的集合不可修改添加
Collection<String> c = new ArrayList<>();
Collection<String> s = CollectionUtils.unmodifiableCollection(c);
c.add("boy");
c.add("love");
c.add("girl");
// s.add("have a error");报错
System.out.println(s);

参考:
https://www.cnblogs.com/qdhxhz/p/10787130.html
https://blog.csdn.net/han12398766/article/details/89684313
https://cloud.tencent.com/developer/article/1515433
https://www.cnblogs.com/songshu120/p/5028482.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,013评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,205评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,370评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,168评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,153评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,954评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,271评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,916评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,382评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,877评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,989评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,624评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,209评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,199评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,418评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,401评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,700评论 2 345