美文网首页
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