JAVA集合框架

java集合框架

1,list接口实现类:

list集合(可以出现重复的元素)
ArrayList:底层是数组结构,查询快,插入慢。
LinkedList:底层是链表结构,查询慢,插入快。

2,Set接口实现类:

Set集合(不能出现重复的元素)
HashSet:底层是HashMap:哈希表(散列表)
*在使用此类存储自定义的类的时候,需要在自定义类中重写,equals()和HashCode()方法。

TreeSet:底层是TreeMap:红黑树
*在使用此类存储自定义的类的时候,自定义类需要实现Comparable接口,并重写Comparable接口中的CompareTo()方法
例如:

//自定义类
class Stu implements Comparable<Stu>{
    private int age;
    Stu(int age){
        this.age = age;
    }
    public void setAge(int age){
        this.age = age;
    }
    public int getAge(){
        return age;
    }
    //重写compareTo()方法
    @Override
    public int compareTo(Stu o1){
        if(o1.getAge()>this.getAge()){
            return 1;
        }else if(o1.getAge()<this.getAge()){
            return -1;
        }
        return 0;
    }
    //重写toString()方法
    @Override
    public String toString() {
        return "Stu{" +
                "age=" + age +
                '}';
    }
}
//这样再把此类存储到TreeSet集合中时,就会调用重写的CompareTo()方法从而不会出现cannot be cast to java.lang.Comparable异常了

*或者在实例化TreeSet类的时候向其中传入自己实现的比较器类Comparator,并重写其中的Comparator()方法。
例如:

//自定义类
class Stu{
    private String name;
    Stu(String name){
        this.name = name;
    }
    public void setName(String name){
        this.name = name;
    }
    public String getName(){
        return name;
    }
    //重写toString()方法
    @Override
    public String toString() {
        return "Stu{" +
                "name='" + name + '\'' +
                '}';
    }
}
//比较器类
class MyComparator implements Comparator<Stu>{
        @Override
        public int compare(Stu o1,Stu o2){
            //因为String类中存在已经写好的compareTo()方法所以直接调用
            return o1.getName().compareTo(o2.getName());
        }
}
//在实例化构造TreeSet类的时候,将比较器实例化并传入其中,这样就不会出现cannot be cast to java.lang.Comparable异常
TreeMap<Stu,Integer> m2 = new TreeMap<Stu,Integer>(new MyComparator());

3,Map接口实现类:

HashMap:底层是哈希表(散列表)【线程非同步】若想要使用线程同步的可以选择使用HashTable。
*在使用此类存储自定义的类的时候,需要在自定义类中重写,equals()和HashCode()方法。

TreeMap:底层是红黑树
*在使用此类存储自定义的类的时候,自定义类需要实现Comparable接口,并重写Comparable接口中的CompareTo()方法,或者在实例化TreeSet类的时候向其中传入自己实现的比较器类Comparator,并重写其中的Comparator()方法。

——————————未完待续——————————————————

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值