当前位置: 代码迷 >> 综合 >> 集合框架( ArrayList LinkedList)
  详细解决方案

集合框架( ArrayList LinkedList)

热度:84   发布时间:2023-11-23 00:01:47.0

集合框架
    存储多个数据/对象,使用数组
    数组:存储相同数据类型一段连续的空间
        限制:定长
            添加、删除、统计比较麻烦
            存储的是单列的值
            
            学号---学生信息
            订单号--订单详情
            中文名称--英文名称
    
    集合框架:一些接口和类
        java.util包
        Collection集合 存储单列数据的根接口
            表示一组对象
            一些 collection 允许有重复的元素,而另一些则不允许。
            一些 collection 是有序的,而另一些则是无序的。
            JDK 不提供此接口的任何直接 实现
            提供更具体的子接口
                List 列表 序列
                    有序(访问顺序和添加顺序一致)
                    有索引
                    允许重复
                    允许null
                    
                    使用参考:动态数组
                    boolean add(E e)
                    void add(int index, E element)
                    boolean addAll(Collection<? extends E> c)
                    boolean addAll(int index, Collection<? extends E> c)
                    E get(int index)
                    E remove(int index)
                    boolean remove(Object o)
                    boolean removeAll(Collection<?> c)
                    void clear()
                    Iterator<E> iterator()
                    ListIterator<E> listIterator()
                    boolean contains(Object o)
                    int indexOf(Object o)
                    boolean isEmpty() 
                    Object[] toArray()
                    Iterator接口  专门迭代Collection接口
                          boolean hasNext() 如果仍有元素可以迭代,则返回 true。
                          E next() 返回迭代的下一个元素 
                          
                    ArrayList  动态数组
                        不是线程安全的
                         
                         特点:底层通过数组来实现
                             增加,删除效率低
                             随机访问速度快
                             内存使用率不高
                         使用场景:频繁增删的,不要选它。
                    LinkedList
                        底层结构:双向链表
                            增删相对效率高(首尾元素增删效率高)
                            随机访问效率低
                            元素散乱分布,内存使用率高
                            
                        作为List的实现类,ArrayList可以做的事情,LinkedList都可以做
                        作为Deque(双端队列)的实现类:
                            支持在两端插入和移除元素
                            xxxFirst()  xxxLast()
                        
                        作为队列:  先进先出
                            添加--往队尾添
                            移除/获取---从队头操作
                            offer(e) 往队尾添
                            poll() 获取并移除队头
                            peek() 获取,但不移除队头
                            
                        作为栈:先进后出
                            栈顶 --头部
                            push()压栈 addFist
                            pop() 弹栈(获取并移除) removeFirst
                            element()获取,但不移除getFirst
                            
                    Vector  线程安全
                        使用方法同ArrayList
                        
                    Stack 已经被LinkedList替代了
                        
                Set 数据集,集合
                    不包含重复元素
                    最多包含一个 null 元素
                    不要求有序
                    没有索引
                    
                    参考:模仿了数学上的 set 抽象
                    HashSet
                    TreeSet
                    
        Map 映射 存储映射关系的接口
            将键映射到值的对象--键值对
            个映射不能包含重复的键;每个键最多只能映射到一个值(key:value  1对1  多对1)
            没有索引
            根据键来操作
            HashMap
        
        Collections 工具类 提供了操作集合的方法
        
    泛型:jdk1.5之后新增
        数据类型参数化
        参数字母:E(element)K(key) V(Value) T(Type)
            其实字母可以随意写 A U
        好处:比较灵活,通用性比较好
        注意使用场景:泛型集合类,泛型类,泛型方法
        
        
   注:主页更多学习资料     
            

  相关解决方案