1. CollectionUtils 并 交 补
@Test
public void test3() {
List<Integer> h = new ArrayList<Integer>();
h.add(1);
h.add(2);
h.add(3);
h.add(6);
;
List<Integer> i = new ArrayList<Integer>();
i.add(3);
i.add(3);
i.add(4);
i.add(5);
// 并集
System.out.println(CollectionUtils.union(i, h)); // [1, 2, 3, 3, 4, 5]
// 交集
System.out.println(CollectionUtils.intersection(i, h)); // [3]
// 交集的补集
System.out.println(CollectionUtils.disjunction(i, h)); // [1, 2, 3, 4, 5, 6]
// h减i的差
System.out.println(CollectionUtils.subtract(h, i)); // [1, 2, 6]
System.out.println(CollectionUtils.subtract(i, h)); // [3, 4, 5]
// 两个集合间的操作
List<Integer> e = new ArrayList<Integer>();
e.add(2);
e.add(1);
List<Integer> f = new ArrayList<Integer>();
f.add(1);
f.add(2);
List<Integer> g = new ArrayList<Integer>();
g.add(12);
// 比较两集合值
System.out.println(CollectionUtils.isEqualCollection(e, f)); // true
System.out.println(CollectionUtils.isEqualCollection(f, g)); // false
}
2. CollectionUtils.collect
案例:从一个对象的集合中,获取某一属性的集合。如,从人员信息集合中获取人员姓名的集合
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.Predicate;
import org.apache.commons.collections.Transformer;
import org.apache.commons.lang3.StringUtils;
import org.junit.Test;
public class CollectionTest {
@Test
public void test1(){
List<Student> stuList = new ArrayList<Student>();
stuList.add(new Student("wang","18"));
stuList.add(new Student("li","19"));
stuList.add(new Student("li","20"));
@SuppressWarnings("unchecked")
List<String> nameList = (List<String>) CollectionUtils.collect(
stuList, new Transformer() {
public Object transform(Object arg0) {
Student u = (Student) arg0;
return u.getName();
}
});
Set<String> nameSet = new HashSet<String>(nameList);
System.out.println(nameSet); //[wang, li]
System.out.println(StringUtils.join(nameSet.iterator(),",")); //wang,li
}
}
class Student{
String name;
String age;
public Student(){}
public Student(String name,String age){
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + "]";
}
}
3. CollectionUtils.filter
案例:从一个对象集合中过滤出只符合要求的对象。如只保留叫 li 的人员信息
@Test
public void test2(){
List<Student> stuList = new ArrayList<Student>();
stuList.add(new Student("wang","18"));
stuList.add(new Student("li","19"));
stuList.add(new Student("li","20"));
CollectionUtils.filter(stuList, new Predicate(){
public boolean evaluate(Object arg0) {
Student v = (Student)arg0;
return StringUtils.isNotBlank(v.getName()) && "li".equals(v.getName());
}
});
System.out.println(stuList); //[Student [name=li, age=19], Student [name=li, age=20]]
}
**注意:这个Predicate类必须实现evaluate(Object obj) 方法,这个方法的返回值只要是 true,说明这个对象是要保留下来的。如这个里面的是取 姓名叫 li 的人,如果是其它特殊的、变动的名称。可以另外新创建一个 实现 Predicate的类。
4 CollectionUtils.select
/**
* 集合筛选
*/
@Test
public void test11() {
List<Student> stuList = new ArrayList<Student>();
stuList.add(new Student("wang", "18"));
stuList.add(new Student("li", "19"));
stuList.add(new Student("li", "20"));
@SuppressWarnings("unchecked")
List<Student> wang = (List<Student>) CollectionUtils.select(stuList, new Predicate() {
@Override
public boolean evaluate(Object object) {
if (Student.class.isAssignableFrom(object.getClass())) {
Student param = (Student) object;
if (StringUtils.isNotBlank(param.getName()) && "wang".equalsIgnoreCase(param.getName())) {
return true;
}
}
return false;
}
});
@SuppressWarnings("unchecked")
List<Student> li = (List<Student>) CollectionUtils.select(stuList, new Predicate() {
@Override
public boolean evaluate(Object object) {
if (Student.class.isAssignableFrom(object.getClass())) {
Student param = (Student) object;
if (StringUtils.isNotBlank(param.getName()) && "li".equalsIgnoreCase(param.getName())) {
return true;
}
}
return false;
}
});
System.out.println(StringUtils.join(wang)); // [Student [name=wang, age=18, birthdaynull]]
System.out.println(StringUtils.join(li)); // [Student [name=li, age=19, birthdaynull], Student [name=li, age=20, birthdaynull]]
}
转载: https://blog.csdn.net/wangxy799/article/details/70911064