美文网首页
2020-07-24

2020-07-24

作者: 凉小枫 | 来源:发表于2020-07-24 22:49 被阅读0次

    集合(一)

    为了解决数组的定长问题, JDK在1.2版本开发了集合框架,

    集合和数组的相同点和不同点

    集合是容器,存储数据的,集合的长度是可变的,集合容器只存储引用数据类型

    数组是容器,存储数据的,数组的长度是固定的,数组存储基本类型和引用类型

    数据多了存数组, 对象多了存集合

    集合框架学习要素 :

    1.向集合容器中存储元素

    2.取出集合容器中的元素

    3.每种集合容器的自身特性

    Collection集合接口

    Collection 层次结构中的根接口,所有的子接口和实现类都会具有他的功能

    Collection接口的方法 :

    添加:add (存储元素)

    移除:boolean remove(元素) 移除集合中指定的元素

            removeAll(Collection c) ) 移除两个集合中相同元素

    包含:boolean contains(元素) 判断元素是否包含在集合中

    集合长度:集合.size()方法 :

                    数组.length 属性 , 字符串.length() 方法,

    清空:void clear() 只清空元素, 集合容器本身依然可以使用

    判断:boolean isEmpty() 判断集合中是否有元素,无元素true

    转换为数组:Object[] toArray() 集合中的元素转成数组*

    取交集:retainAll(Collection c) 两个集合取交集

    Collections工具类

    java.util.Collections 集合操作的工具类,提供方法来操作集合,方法全部是静态方法,不能实例化

    方法 :

    static void shuffle(List list) 集合元素随机排列

    static void sort(List list) 集合中元素的自然顺序排序

    static void sort(List list,Comparator c) 按照比较器的顺序进行排序

    static 传递什么返回什么 synchronized开头(传递集合) 线程不安全集合,变成安全的集合

    Comparator 是比较器接口, 需要自定义实现类,然后重写方法

    集合遍历的两个方法

    1.迭代器 Iterator:迭代器是所有的Collection集合的通用遍历方式.

     获取迭代器接口Iterator的实现类对象 :   Iterator<String> it = coll.iterator();

    遍历:  while ( it.hasNext() ) { String str = it.next();}

    每个集合容器的内部特性不一样,迭代器是如何做到通用遍历?

    迭代器接口全是内部类!迭代器接口实现类,都是集合的内部类实现, 可以完成遍历的通用性

    2.增强for循环

    for(数据类型 变量名 : 集合或者数组) { 方法体 }

    弊端 : 无索引,不能修改容器中的元素内容

    正式讲解各个集合子类之前讲一下常见的数据存储结构:

    栈结构 :

    内存 : 进口和出口是同一个.

    元素进入到内存后,必须到达内存的底部.

    数据先进后出

    队列结构 :

    内存 : 既有入口,也有出口

    过安检, 在你前面的人,先过去

    数据先进去的先出来, 先进先出

    数组

    数组也一种最基本的,使用频率最高的数据结构.

    数组的地址是连续的

    弊端 : 定长. 需要添加或者是删除元素,只能利用数组的复制方式来实现

    数组在堆内存存储, 堆内存中数组的复制,非常消耗内存资源

    数组特点 : 内存地址是连续, 数组的查询速度快,索引

    数组的增和删的速度慢

    链表

    链表的数据存储结构 : 元素和元素之间保存地址的方式存储

    链表 : 采用一个元素,记录下一个元素的内存地址方式, 单向链表

    链表 : 元素记录下一个元素的内存地址,同时也记录前一个内存地址, 双向

    链表特点 : 内存地址不是连续, 找元素,一个一个去找, 查询速度慢

    增删速度快

    List接口

    特点就不用多说了吧,三个

    方法很多继承自collection接口,在操作集合时可以根据index值操作

    他也有子类,ArrayList和LinketList接口

    ArrayList

    底层是数组型结构实现,数组可复制,于是有点"可变"数组那个味了,线性不安全,有索引查询速度快,但因为复制数组增删速度就慢了

    LinketList是双链表结构型

    由链表结构特点可知,元素与元素之间储存地址,内存不是连续的,查询慢,修改快

    具有特有方法:(不用索引可以直接操作)

    addfirst(元素).addlast(元素).增添

    getfirst().getlast():取出值

    removefirst()removelast():移除元素

    push(元素)压栈

    元素  pop()弹栈

    相关文章

      网友评论

          本文标题:2020-07-24

          本文链接:https://www.haomeiwen.com/subject/uiwslktx.html