Java集合中removeIf的使用

2021-09-24 10:27:51 字數 1953 閱讀 5840

在jdk1.8中,collection以及其子類新加入了removeif方法,作用是按照一定規則過濾集合中的元素。這裡給讀者展示removeif的用法。 

首先設想乙個場景,你是公司某個崗位的hr,收到了大量的簡歷,為了節約時間,現需按照一點規則過濾一下這些簡歷。比如這個崗位是低端崗位,只招30歲以下的求職者。

//求職者的實體類

public class person ';

}}

該person類只有三個成員屬性,分別是姓名name,年齡age和性別gender。現要過濾age大於等於30的求職者。 

下面是不用removeif,而是使用iterator的傳統寫法:

collectioncollection = new arraylist();

collection.add(new person("張三", 22, "男"));

collection.add(new person("李四", 19, "女"));

collection.add(new person("王五", 34, "男"));

collection.add(new person("趙六", 30, "男"));

collection.add(new person("田七", 25, "女"));

//過濾30歲以上的求職者

iteratoriterator = collection.iterator();

while (iterator.hasnext())

system.out.println(collection.tostring());//檢視結果

下面再看看使用removeif的寫法:

collectioncollection = new arraylist();

collection.add(new person("張三", 22, "男"));

collection.add(new person("李四", 19, "女"));

collection.add(new person("王五", 34, "男"));

collection.add(new person("趙六", 30, "男"));

collection.add(new person("田七", 25, "女"));

collection.removeif(

person -> person.getage() >= 30

);//過濾30歲以上的求職者

system.out.println(collection.tostring());//檢視結果

通過removeif和lambda表示式改寫,原本6行的**瞬間變成了一行! 

執行結果:

[person, person, person] 

process finished with exit code 0

30歲以上的王五和趙六都被過濾掉了。

當然,如果對lambda表示式不熟悉的話,也可以使用不用lambda的removeif,**如下:

collectioncollection = new arraylist();

collection.add(new person("張三", 22, "男"));

collection.add(new person("李四", 19, "女"));

collection.add(new person("王五", 34, "男"));

collection.add(new person("趙六", 30, "男"));

collection.add(new person("田七", 25, "女"));

collection.removeif(new predicate()

});system.out.println(collection.tostring());//檢視結果

java中的集合

set hashset無序不重複,底層資料結構是雜湊表,執行緒非同步,保證元素唯一性原理是判斷hashcode值是否相同 位址相同 如果相同還會繼續判斷equals方法是否為true 是否是同乙個物件 treeset字典序不重複,底層資料是二叉樹,保證元素唯一性原理是compareto方法retur...

Java中的集合

有序的 允許重複的 arraylist實現類 基於陣列實現 remove語句,刪除成功則返回true,不成功則返回false 注 不要在迭代時進行刪除,否則會出錯,可以使用迭代器自身的remove方法,如上。linklist實現類 基於鍊錶實現 與arraylist區別 越靠近頭部的新增刪除,arr...

java中的集合

1.1 collection介面 新增 add e e addall collectionc 刪除 clear 清空集合 remove object o 刪除乙個元素 removeall collection c 刪除兩個集合的交集部分 retainall collection c 刪除兩個集合沒有...