在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 刪除兩個集合沒有...