Java学习之数组、集合

数组:

​        数组的长度是固定的,只能存放固定长度的数据,10

​        数组存放的数据都是同一种数据类型,

集合:java中存放数据的容器,可以用来存放多个数据

​        存放多个数据,长度不是固定的,可以随意进行添加 修改 查询 删除

​        Collection:list集合和set集合的父接口

​                    存放单列数据,定义了存放数据的方法集合

​                    add():添加指定元素到指定集合中

​                    addAll():指定集合添加到原有集合中

​                    clear():清除集合中所有的元素

​                    contains():判断指定的元素是否在指定的集合中

​                    containsAll():判断指定集合是否在原有的集合中

​                    hashcode():返回集合的哈希码值

​                    isEmpty():判断集合的内容是否等于null

​                    iterator():获取集合所有的元素的迭代器

​                    remove(Object) :删除指定的元素

​                    size()集合的长度

​        List:    有序(添加的顺序和获取的顺序是一致的) 可以重复元素(集合中有重复的内容)的集合

​                    ArrayList    LinkedList  vector区别

​                add(int,object) 指定的元素插入集合中的指定的位置

​                addALL():指定的集合插入原有集合中的指定的位置

​                get():通过元素的下标获取对应的元素

​                idnexOf():指定元素在集合中第一次出现的位置

​                 lastIndexOf():指定元素在集合中最后一次出现的位置

​                remove(int):通过下标删除指定的元素

​                set(int Object):指定的元素替换集合中指定位置上的元素

​            Arrayiist:

​                        是list集合主要实现类 ,动态数组来实现的,任何数据插入包括null,快速随机访问存储元素。支持随机访问,查询数据块,增删比较慢

​                     jdk1.7之前:初始化为10长度的数组

​                    jdk1.8之后。创建一个长度为0,的数组,添加第一个元素的时候在创建一个初始容量为10的数组

​                    如果超过数组的长度,对原有数组进行扩容,原有的长度的1.5倍

​            LikedList:

​                                以链表的的形式进行保存元素,频繁增删的比ArrayList要快一些

​            vector:

​                    

​        ArrayList和LinkedList集合区别

​            线程不安全的,执行效率高,ArrayList实现基于动态数组来实现的,LinkedList  链表实现的,对应随机访问的get和set,ArrayListx效率比linkedList高,LinkedList指针的移动,对于新增和删除 LinkedList要占优势,因为ArrayList集合要进行数据的移动

​        ArrayList和vector区别

​            几乎是相同,唯一的区别 vector是属于同步类,内存使用率要比ArrayList要大,访问要慢。大多数情况下适用ArrayList而不是vector 

​                        

​        set:collection集合的子类

​                    set集合没有提供额外提供方法

​                    set集合不允许包含重复的元素,无序的集合,如果尝试把两个相同的元素添加到set集合中,则会添加失败

​            add方法会判断两个对象是否相同 使用equals方法,

​                Hashset:

​                            是set集合的实现类,大部分情况使用时set集合的hashset集合

​                          hash算法来存储集合的中元素,增加 查询 删除

​                            1.不保证元素的排列顺序

​                            2.hashset不是线程安全

​                            3集合中的元素可以为null

​                    添加元素的时候,调用元素的hashcode方法得到hashcode值通过散列函数决定该对象在hashset集合中存储的位置,如果两个元素的hashcode值相同,继续调用equals方法,如果equals方法返回true,添加失败,false添加成功,元素到集合中,如果对应位置有 元素的话,链表的方式进行存放

​                TreeSet

​                        可以保证元素处于排序的状态

​                

​                        自然排序和定制排序(比较器排序)

​                     Treeset自然排序(默认的排序方式)

​                            自然排序:

​                                        Comparable接口指定排序的类

​                                            重写compareTo()比较元素之间的大小关系

​                                                    0:两个对象相同

​                                                    正数:当前对象大于参数对象

​                                                    负数:当前对象小于参数对象

​                            定制排序,比较器排序

​                                    comparatore接口指定排序的类

​                                    重写compare(Object T1,Object T2)  比较两个参数的大小,   

​                                        0:相同

​                                        正数:T1>T2

​                                        负数  T1<T2

​        map

​            用于保存映射关系的数据  key-value

​             put:添加的方法

​                      键是不能有重复

​                    键有重复,put相当于修改

​              remove删除该方法:通过键删除

​            get()通过键获取对应的值

​            获取map集合的方式

​                    Set<> se=集合.keySet()

​                    for(){

​                            集合.get(键的名字)

​                    }    

​                    entrySet():返回具有映射关系的set集合的视图

​                                getKey()获取键

​                                getValue()获取值

​                                        

HashMap:

​                    频率最高的一个实现类,键和值都可以null。不保证元素的顺序

​                    所有key都是set集合 无序,不可以重复,key中添加的类必须重写hashcode和equals方法

​                    value都是collection 有序 可以重写,value所在的类重写euqals()

​                    判断key相同的标准是 equals和hacode

​                            value:euqals方法返回true

​                    存储结构:

​                            jdk1.8之前:数组+链表

​                            jsk1.8之后:数组+链表——红黑树

​    TreeMap:

​                key进行排序的,自然排序和比较器排序

​                自然排序:

​                                        Comparable接口指定排序的类

​                                            重写compareTo()比较元素之间的大小关系

​                                                    0:两个对象相同

​                                                    正数:当前对象大于参数对象

​                                                    负数:当前对象小于参数对象

​                            定制排序,比较器排序

​                                    comparatore接口指定排序的类

​                                    重写compare(Object T1,Object T2)  比较连个参数的大小,   

​                                        0:相同

​                                        正数:T1>T2

​                                        负数  T1<T2

Collections代表是集合的工具类

​                sort():对list集合进行升序排列

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值