栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JavaSE -- 集合 -- ArrayList -- Collection -- 迭代器、增强for -- 链表 -- 泛型 -- Set集合

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JavaSE -- 集合 -- ArrayList -- Collection -- 迭代器、增强for -- 链表 -- 泛型 -- Set集合

集合

集合的底层:

集合的底层是数组:

        第一次增加元素时,初始化一个长度为10的数组。

        当存储第11个元素时,会创建一个新数组,新数组长度是老数组的1.5倍。

        每一次扩容将老数组的元素复制到新数组。

集合的体系:

单列集合:

        Collection:

                List: -- 可重复的。

                        ArrayList -- 核心实现类

                        LinkedList

                Set: -- 不可重复的。

                        HashSet

                        TreeSet

双列集合:

        HashMap

        TreeMap

ArrayList

常用的方法:

add(obj):添加。

add(index,obj):插入。

remove(index):删除。

remove(obj):删除。

set(index,obj):修改。

get(index):查询。

clear():清空集合。

isEmpty():判断集合是不是空的。

size():返回集合的长度。

Collection

Collection 是 List 的父接口,使用时,要用他的子接口下面的实现类。

Collection 是 没有索引相关的操作 -- 索引操作的方法,是List接口特有的。

                有:

                add(元素) -- 添加元素

                remove(元素) -- 删除元素

                clear() -- 清空集合

                isEmpty() -- 判断集合是否为空

                contains(元素) -- 判断集合中是否有这个元素

                size() -- 集合长度

List扩展:

                add(index,元素) -- 通过索引,指定位置添加

                remove(index) -- 删除索引处元素

                set(index,obj) -- 修改索引处元素

                get(index) -- 得到索引处元素

迭代器

普通for循环,带索引的:

        操作索引相关时用。

迭代器:

        不要用集合对象去修改、删除元素,因为每一次修改,修改次数++,next()时会校验修改次数和元素个数是否相等,不等就会报异常:ConcurrentModificationException。

增强for:

        不能删除元素,不能改,只能查看。

链表

数组:

        增删慢,查询快。

        原因:

                数组是一段连续的空间,有索引,查询时可直接通过索引查询数据。

                增删时,会导致很多的元素移动,效率低。

        ArrayList 底层数据结构就是数组。 -- 常用的,因为实际业务中,查询时主流。

链表:

        增删快,查询慢。

        原因:

                链表不是连续开辟的空间,需要存储数据时,才会开辟一个节点,有点节省空间。

                增删时,只需要改变相邻元素的指向关系即可,效率较数组高。

                查询时,需要从头开始遍历,效率较数组低。

        LinkedList 底层数据结构是链表。

泛型

没有泛型,集合容器所能接收的类型是默认Object。缺点是遍历元素时,类型是Object转型存在风险。

E 是一个变量,目前可指代一切引用类型,可以再类中使用 E ,创建该泛型类对象时才明确E的具体类型。

泛型类:public class Fan{}

泛型方法:public E fan{}

泛型变量:private E e;

泛型接口:public interface MyInter

通配符:

        :规定了上限,可以接收该类型,或其子类。

        :规定了下限,可以接收该类型,或其父类。

Set集合

Set:

        TreeSet:

                以存储数据的值,比较大小,默认是从下到大

                        String:先比较首字母,当首字母相同时在依次比较后面的。

                        Integer:比较大小。

                为什么打印出来是这种格式:[值1, 值2, 值3]?

                        因为重写了toString。

                如果TreeSet里存储的是自定义类型,是否支持排序?

                        不支持,需要实现Comparable接口。并且重写compareTo方法。

                                compareTo方法:-- 返回值int

                                        比较结果。> 0 排右边,< 0排左边,= 0 视为重复元素,不给予存储。

                                       int类型: return this.age - other.age;

                                       String类型:return this.name.compareTo(other.name);

        HashSet:

                取得顺序:按照存储的数据的哈希值比较大小,从小到大排序。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1031222.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号