1.去重
1.1 for循环去重
for (int i = 0; i
list.remove(j);
j--;
}
}
}
测试结果:
,感觉还是有点用的,感觉循环次数太多了,不推荐使用。
List list = new LinkedList();
List list1 = new LinkedList();
Random random= newRandom();int s=0;while (s<50) {
list.add(random.nextInt(10));
s++;
}
System.out.println("去重前"+list);for(Integer temp:list) {if (!list1.contains(temp)) { //判断list1中是否存在这个元素,不存在就保存进去
list1.add(temp);
}
}
list=list1;
System.out.println("去重后" + list);
第二种,可以用用。
1.2 set去重
set集合的提点是无序,不能重复,所以如果把list先存进set集合中,重复元素就没了,之后再取出,重现放进list就可以了,但这个方法有一个缺点,就是原来list元素的顺序会被打乱,如果对顺序有要求的话不推荐使用。
List list = new LinkedList();
Set set = new HashSet();
Random random= newRandom();int s=0;while (s<50) {
list.add(random.nextInt(10));
s++;
}
System.out.println("去重前"+list);for(Integer temp:list) {
set.add(temp);
}
list.clear();for(Integer temps:set) {
list.add(temps);
}
System.out.println("去重后" + list);
1.3 map去重
hashmap的key是不能重复的,value是可以重复的,所以我们可以把list的值当做map的key,这样就可以把重复的值去掉了
List list = new LinkedList();
Map map = new HashMap();
Random random= newRandom();int s=0;while (s<50) {
list.add(random.nextInt(10));
s++;
}
System.out.println("去重前"+list);for(Integer temp:list) {
map.put(temp,"value");
}
list.clear();for (intkey : map.keySet()){
list.add(key);
}
System.out.println("去重后" + list);
2.排序
排序一般是用集合工具类中的sort()方法,这个方法还有一个重载的方法,下面分别来介绍并测试一下。
2.1 Collections.sort(list)
直接调用sort方法,就可以了,排序方式是升序
List list = new LinkedList();
Random random= newRandom();int s=0;while (s<10) {
list.add(random.nextInt(10));
s++;
}
System.out.println("排序前"+list);
Collections.sort(list);
System.out.println("排序后" + list);
2.2 Collections.sort(list,Comparator<>)
这个重载方法主要用来帮对象排序,自定义排序
先创建一个实体类 dog类
public classdog {private intid;privateString name;privateString sex;public dog(intid,String name,String sex) {this.id=id;this.name =name;this.sex =sex;
}public intgetId() {returnid;
}public void setId(intid) {this.id =id;
}publicString getName() {returnname;
}public voidsetName(String name) {this.name =name;
}publicString getSex() {returnsex;
}public voidsetSex(String sex) {this.sex =sex;
}
}
之后就是调用sort方法,并且实现Comparator接口,实现里面的compare方法。
List list = new LinkedList();int s=10;while (s>0) {
list.add(new dog(s,"南波万","雄"));
s--;
}for(dog o:list) {
System.out.println(o.getId());
}
Collections.sort(list,new Comparator() {public intcompare(dog o1, dog o2) {if (o1.getId() >o2.getId()) {return 1;
}else if (o1.getId()
}else{return 0;
}
}
});
System.out.println("排序后");for(dog o : list) {
System.out.println(o.getId());
因为我的排序字段是id,就用了id做比较,大于返回正数,一般都是为1,小于返回负数,一般都是-1,等于返回0