1 package test;
2
3 import java.util.AbstractCollection;
4 import java.util.ArrayList;
5 import java.util.Iterator;
6 import java.util.List;
7 import java.util.function.Predicate;
8
9 /**
10 * Created by wang.honglin on 2018/7/26.
11 */
12 public class Test {
13 public static void main(String[] args) {
14 TestList list = new TestList();
15 list.add("1");
16 list.add("2");
17 list.add("3");
18 list.add("4");
19 // 删除集合值为3的元素
20 //list.removeIf(Predicate.isEqual("3"));
21 // 删除集合值为3或者4的元素
22 //list.removeIfOr("3", "4");
23 // 删除满足str1 str 的元素
24 list.removeIfAnd("3", "3");
25 list.forEach(o -> {
26 System.out.println(o);
27 });
28 }
29
30 /**
31 * 扩展ArrayList类,用于实现可以满足多个条件的删除
32 */
33 public static class TestList extends ArrayList {
34 /**
35 * 删除集合指定元素,
36 * @param str1 条件1
37 * @param str 条件2
38 * @return
39 */
40 public boolean removeIfOr(Object str1, Object str) {
41 Predicate predicate1 = Predicate.isEqual(str);
42 Predicate predicate = Predicate.isEqual(str1);
43 return super.removeIf(predicate.or(predicate1));
44 }
45
46 /**
47 * 删除指定元素,满足str1和str的元素会被删除
48 * @param str1 条件1
49 * @param str 条件2
50 * @return
51 */
52 public boolean removeIfAnd(Object str1, Object str) {
53 Predicate predicate1 = Predicate.isEqual(str);
54 Predicate predicate = Predicate.isEqual(str1);
55 return super.removeIf(predicate.and(predicate1));
56 }
57 }
58 }