java集合总结

集合总结
    一.List
       (1) 常见数据结构
            1.数组(ArrayList)

                        ArrayList() 构造一个初始容量为 10 的空列表。
                      ArrayList(int initialCapacity) 构造一个具有指定初始容量的空列表。

                      ArrayList list = new ArrayList();

            2.链表(LinkedList)
            3.堆栈(栈) 特点 FILO
            4.队列 FIFO
       (2) 集合框架的体系
            继承体系

                Collection(所有集合类接口的超级接口)
                    |--List:特点 有序(添加的顺序)可以重复的数据
                        |--ArrayList  :查询和修改效率高,但是删除和插入效率低。(线程不安全)
                        |--LinkedList :插入和删除效率高 (线程不安全)
                         |--Vector          :    线程安全
            如何选择

        
                        到底怎么使用如何选择:
                            1.有序(添加的顺序)可以重复的数据
                            2.如果查询和修改的频率高-ArrayList
                            3.如果插入删除频率高-LinkedList
                            4.如果要求线程安全 Vector
      (3)ArrayList
            1多查询API
            2.基本数据的维护 常用的CRUD 方法

                        void     add(int index, E element) 将指定的元素插入此列表中的指定位置。
                        方法太多,查看api。
            3.集合的遍历
                1.for          将控制循环的变量,作为索引值,依次查找数组连续存储空间的值
                2.增强for循环

                                        foreach
                                            for(数据类型 形式参数 : 源){
                                        }
                                源:需要遍历的存储数据东西:   数组 集合(必须是Iterable接口的实现)
                                数据类型:源中存数据的类型
                                形式参数:每次从源中遍历的数据.零时存放在形式参数中
                3.迭代器
                    1.单向迭代器
                        Iterable 接口  有接口方法
                    2.双向迭代器
                        listIterator
       (4)LinkedList
            1.多查询API
            2.基于数据结构的不同,他提供了很多操作头 和尾的方法
    二.Set
        使用的大环境:无序(添加的顺序)、不重复
        HashSet
            1.判断重复的标准        ① 通过添加进去的元素的hashCode+eqauls  两者进行比较
                                               ② 如果两个对象的hashCode相等  并且 两个对象调用equals结果是true  才认为两个元素重复
            2.hashCode&&equals
            3.根据自己的业务场景决定覆写方法的逻辑
        TreeSet
            1.有排序的功能
            2.Comparator 用于自定义比较器    
                1.往集合中放的时候  TreeSet(Comparator<? super E> comparator) 

 

 

1.Comparator 是一个自定义比较器的接口(标准),必须得有进行比较的方法 :compare(Object o1,Object o2);

例子:
public static void main(){
    Student stu = new Student("aa",18);
    Student stu2 = new Student("bb",19);
    TreeSet ts = new TreeSet(new B());//新建构造器放入TreeSet里
    ts.add(stu);
    ts.add(stu2);
}


class B implements Comparator{ 
}

            3.Comparable 自然排序

如果一个类实现了Comparable接口,可以认为这个类的对象具有自然排序的能力(本质就是这个对象可以调用比较的方法compareTo),这种比较和排序的规则就是自然排序

需要改变的话直接在内部覆写compareTo。
compareTo(Object obj)
传入的是需要和里面存的值比较的一个新值。
如this.name指的是存值的所有name。

        集合的体系
            
            子主题 2
                
    三.Map
        接口        
            HashMap    
            TreeMap    
            判断key重复的标准  和 HashSet 、TreeSet一样                        

   Map接口
 |---HashMap  判断重复的标准和HashSet一致,通过键的hashcode和equals;
 |---TreeMap   判断重复的标准和TreeSet一致,1通过自然排序(Comparable接口),2定制排序(Compartor比较器)
        map常用方法
            CRUD    
            遍历方式
                1.使用Set<Entry>


  ①先得到所有的Entry对象,Entry对象就包装了key,values;
  ②遍历Entry对象的集合,然后依次从Entry对象中调用方法:getKey(),getValue()

备注:
hashmap里面的Node内部类实现了Map里面的内部类Entry
所以使用Entry强转可以调用方法,因为Entry是接口,Node是有实现方法的。

                2.使用keySet 方法

   ①先得到所有key,怎么得到?
    通过keySet方法取到;
    ②然后遍历keySet,依次通过key来查找value。
    通过Object get(Object key)方法;
        Collections工具类
        Properties
            特殊的hashTable
            使用场景:读取电脑上配置文件
        hashMap的底层原理

HashMap是内部类Node实现了Map的内部接口Entry
TreeMap是内部类Entry实现了Map的内部接口Entry

所有都有getkey和getvalue方法

用多态写法Entry屏蔽他们各自的实现类的差异

转载于:https://my.oschina.net/u/4083694/blog/3027073

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值