List list2 = new ArrayList();
list2.add("1");
list2.add("2");
list2.add("3");
list2.add("4");
List list3 = new ArrayList();
list3.add("3");
list3.add("4");
list3.add("5");
list3.add("6");
list2.removeAll(list3);
for(int i = 0;i<list2.size();i++){
System.out.println(list2.get(i));
}
输出 1 2
removeAll的作用 list2去掉list3和list2共有的元素
归并
List<String> list=new ArrayList<String>();
list.add("蔬菜");
list.add("牛奶");
list.add("水果");
list.add("蔬菜");
Set set=new HashSet();
set.addAll(list);
List<String> listNoRepeat=new ArrayList<String>();
listNoRepeat.addAll(set);
for(String s : listNoRepeat){
System.out.println(s);
}
输出 蔬菜 牛奶 水果 去掉重复的数据
//定义一个去除list集合中重复元素
public static List fun(List list) {
//新建一个newlist集合
List newlist = new ArrayList();
//遍历参数集合
for (Object object : list) {
//判断新集合是否不包含object
if (!newlist.contains(object)) {
//不包含就添加元素
newlist.add(object);
}
}
//返回新的元素
return newlist;
}
- 这个方法也不错挺方便的
list的contains方法不用说了
Collections.swap(list, 0, 2);交换位置 第0个元素和第2个元素交换位置
Collections.shuffle(list); 随机排序
下面讲一些泛型集合的操作
用到Person类 里面 有两个字段 name pwd
排序
List<Person> list2 = new ArrayList<Person>();
list2.add(new Person("3","我艹"));
list2.add(new Person("1","你说"));
list2.add(new Person("4","结婚"));
list2.add(new Person("7","猕猴桃"));
list2.add(new Person("5","猴哥"));
Collections.sort(list2, new Comparator<Person>(){
public int compare(Person arg0, Person arg1) {
return DoNumberUtil.intNullDowith(arg0.getName())>DoNumberUtil.intNullDowith(arg1.getName())? 1: -1;
}
});
根据person的name大小排序(前提是这个字段存的是Int类型)
Collections.sort(list2, new Comparator<Person>(){
public int compare(Person arg0, Person arg1) {
return arg0.getPwd().compareTo(arg1.getPwd());
}
});
根据pwd排序 string类型已经重写了cmpareTo方法 直接调用就OK
其他类型 date,float同理
删除
List<Person> list2 = new ArrayList<Person>();
list2.add(new Person("根茎","我艹"));
list2.add(new Person("菌菇","你说"));
list2.add(new Person("水果","结婚"));
list2.add(new Person("豆类","猕猴桃"));
list2.add(new Person("水果","猴哥"));
//我要删除里面元素中等于 “水果”的元素
Iterator<Person> sListIterator2 = list2.iterator();
while(sListIterator2.hasNext()){
Person e = sListIterator2.next();
if(e.getName().equals("水果")){
sListIterator2.remove();
}
}
这里说一下不能用循环去删除list.remove方法删除下标是因为 你删除了下标1那它之后的那个元素下标就会变化 有时候会出现数组越界的异常
按照自定义的内容进行排序 我要让集合按照 根茎.水果.豆类.菌菇的顺序排序怎么办 循环添加太麻烦
class PersonComparator implements Comparator<Person> {
@Override
public int compare(Person o1, Person o2) {
String myrule = "<根茎<水果<豆类<菌菇";
RuleBasedCollator myrulecollato = null;
try {
myrulecollato = new RuleBasedCollator(myrule);
} catch (ParseException e) {
e.printStackTrace();
}
return myrulecollato.compare(o1.getName(), o2.getName());
}
}
PersonComparator pc = new PersonComparator();
Collections.sort(list2, pc);
主要是myrule这个。 大家看一下就懂
继续泛型集合的归并
要是集合里面的元素Person是一样的 比如 list.add(person) list2.add(person)
这样用上面的归并就可以
要是是那种 例如 我要把person的名字为张三的归并 这样比较烦 还得定义List<String>集合抽取出来名字 然后contains
集合合并就是
addAll方法了
这排版 简直无语 -。-讲究看吧
集合的各种操作 归并 排序
最新推荐文章于 2023-11-24 18:30:50 发布