javaseday17补充(remove删除依赖的方法 ArrayList去重 TreeSet比较器)
来源:互联网 发布:火柴人动图制作软件 编辑:程序博客网 时间:2024/06/08 08:13
public class ArrayListTest02 {
public static void main(String[] args) {
// SingleDemo01();
ArrayList al = new ArrayList();
al.add(new Person("lisi1",21));
al.add(new Person("lisi2",22));
al.add(new Person("lisi3",23));
al.add(new Person("lisi4",24));
al.add(new Person("lisi4",24));
System.out.println(al);
System.out.println(al.remove(new Person("lisi4",24)));//依据equals 删除对象 符合的都干掉 而hashSet依赖于hashCode和equals
al=getSingleElement(al);
System.out.println(al);
}
public static void SingleDemo01() {
ArrayList al = new ArrayList();
al.add("abc1");
al.add("abc2");
al.add("abc1");
al.add("abc1");
al.add("abc");
System.out.println(al);
al=getSingleElement(al);
System.out.println(al);
}
private static ArrayList getSingleElement(ArrayList al) {
//1、定义一个临时容器
ArrayList temp = new ArrayList();
//2、迭代al集合
Iterator it = al.iterator();
while(it.hasNext()){
Object obj = it.next();
//3、判断被迭代到的元素是否在临时容器中存在
if(!temp.contains(obj)){//内部依赖于元素的equals方法
temp.add(obj);
}
}
return temp;
}
}
HashSet 还有个子类LinkedHashSet 可以保证唯一而且有序
注意主函数的名称
public class Person implements Comparable{//想让人有比较的功能所以实现compareable接口
public int compareTo(Object o) {
if(!(o instanceof Person)){//健壮性判断
throw new ClassCastException("类型错误");
}
Person p = (Person) o;
int temp = this.age-p.age;
int temp1 = this.name.compareTo(p.name); //可用于按名字排
return temp==0?this.name.compareTo(p.name):temp;
// if(this.age>p.age)
// return 1;
// if(this.age<p.age)
// return -1;
//
// if(this.age==p.age){//如果对象想比较就实现comparable
//
// return this.name.compareTo(p.name);
//
// }
// return 0;
}
import java.util.Comparator;
/**
* 要指定排序的话
* 创建了一个根据Person类的name进行排序的比较器
* @author Administrator
*
*/
public class CompartorTest01 implements Comparator {
@Override
public int compare(Object o1, Object o2) {
Person p1 = (Person) o1;
Person p2 = (Person) o2;
int temp = p1.getName().compareTo(p2.getName());//注意引用的属性
return temp==0?p1.getAge()-p2.getAge():temp; //如果返回1就是往右 返回-1就往左
}
}
/*
* TreeSet 可以对set集合中的元素进行排序 不同步
* 判断元素唯一性的方式 就是根据比较方法的返回结果是否为0 是0 就是相同元素 不存
*
* TreeSet 对元素进行排序的方式一
* 让元素自身具备比较功能 元素就需要实现Comparable接口覆盖compareTo方法
*
* 如果不要按照对象中具备的自然顺序进行排序 如果对象中不具备自然顺序。
* 可以使用TreeSet 集合第二种排序方式
* 让集合自身具备比较功能 定义一个类 实现Comparator 接口 覆盖compareTo方法
* 将该类对象作为参数传递给TreeSet集合的构造函数
*
*/
public class TreeSetTest01 {
public static void main(String[] args) {
// Demo01();
TreeSet ts = new TreeSet(new CompartorTest01());//用来排序 依赖于比较
/*
* 以Person对象年龄进行从小到大的排序
*
*/
ts.add(new Person("zhangsan",12));//没有比较功能
ts.add(new Person("wangwu",13));
ts.add(new Person("lisi",11));
ts.add(new Person("xiaohua",11));
ts.add(new Person("xiaoqiang",22));
Iterator it = ts.iterator();
while(it.hasNext()){
Person p = (Person) it.next();
System.out.println(p.getName()+"..."+p.getAge());
}
}
public static void Demo01() {
TreeSet ts = new TreeSet();
ts.add("abb");
ts.add("ab");
ts.add("bab");
ts.add("cb");
Iterator it = ts.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
}
import java.util.Iterator;
import java.util.TreeSet;
/*
* 对字符串进行长度排序
*/
public class TreeSetTest02 {
public static void main(String[] args) {
TreeSet ts = new TreeSet(new ComparatorByLength());
ts.add("aaa");
ts.add("aa");
ts.add("aasa");
ts.add("aaaa");
ts.add("aaaa");
Iterator it = ts.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
}
import java.util.Comparator;
public class ComparatorByLength implements Comparator {
@Override
public int compare(Object o1, Object o2) {
String s1 = (String) o1;
String s2 = (String) o2;
int temp = s1.length()-s2.length();
return temp==0?s1.compareTo(s2):temp;//字符串自身具备的compareTo方法
}
}
- javaseday17补充(remove删除依赖的方法 ArrayList去重 TreeSet比较器)
- TreeSet集合的一个比较器排序去重案例
- ArrayList数据去重的简单方法
- ArrayList中remove()方法删除长度大于5的元素之后下标重定位的问题
- 不同方法数组去重的比较
- ArrayList的remove()方法
- ArrayList和LinkedList add和remove方法的比较
- HashSet与TreeSet去重的区别
- TreeSet去重字符串
- ArrayList的方法:remove(object o) 、remove(int index)、removeAll(Collection c)时间复杂度的比较
- 细说ArrayList的remove方法
- ArrayList、Iterator的remove方法
- Java中hashSet与treeSet的去重原理
- 为ArrayList去重
- ArrayList去重
- ArrayList练习 ,去重
- c# ArrayList去重
- TreeSet比较器的用法
- 什么是面向对象
- 线段树的应用——hdu2795 Billboard
- Qt安装、配置开发环境和使用方法
- DNA比对--蓝桥杯国赛j历年真题
- 【BestCoder】小C的倍数问题
- javaseday17补充(remove删除依赖的方法 ArrayList去重 TreeSet比较器)
- 计算机知识补充扩展
- solutions
- 【Java学习笔记】方法和数组
- C 实现ArrayQueue队列
- 欢迎使用CSDN-markdown编辑器
- python django model联合主键
- Python中的静态函数的用法
- 【m段最大连续子段和的和】HDU