集合collection

集合框架

1.集合

           集合可以存放多种多个数据! 为什么不使用数组?

           数组的长度不可变,无法存放预期的值【新闻条数】定义长了浪费资源,定义短了不够使用

           集合的内容

                                    collection

                        list                            set                                                    map

           ArrayList  Vector   LinkedList       HashSet  TreeSet              HashMap    TreeMap

          

           各个集合接口的值是如何存放的

           1.list  存放了一组有序且不唯一的对象。

           2.set   存放了一组无序且唯一的对象

           3.map   存放了一组键值对的对象            

List

1.ArrayList实现类

           特点:ArrayList实现了长度可变的数组,在内存中分配了一段连续的空间,遍历和随机访问元素的效率比较高     线程不安全

           方法:add(Object o)  添加元素

                 add(intindex, Object o)  根据指定的下表添加元素

                 size()        获取集合的元素个数

                 get(int index) 返回指定索引的元素,返回的类型为Object类型

                 contains(Objecto) 判断集合中是否存在指定的元素  存在返回true 不存在返回false

                 remove(int index) 根据下表删除  并返回删除的对象     删除的下标不存在报错

                 remove(Objecto) 根据指定的元素删除  并返回删除的结果【true/false】     删除的元素不存在不报错

                                  如果下标和存入的值是相同的,默认以下标来删除

                 clear()  清空集合中所有的元素    

           空间扩充

           默然为10个      空间不够 每次扩充1.5倍

           ArrayList al=new ArrayList(20);   //扩充0次

          

           ArrayList al=new ArrayList();  //扩充一次

            al.add(1);al.add(2);

            al.add(3);al.add(4);

            al.add(5);al.add(6);

            al.add(7);al.add(8);

            al.add(9);al.add(10);

            al.add(11);//此时有16个空间

 

2.Vector

和我们的ArrayList一样

           特点: 线程安全  效率低

           方法:add(Object o)  添加元素

                 add(int index, Object o)  根据指定的下表添加元素

                 size()       获取集合的元素个数

                 get(intindex) 返回指定索引的元素,返回的类型为Object类型

                 contains(Object o) 判断集合中是否存在指定的元素  存在返回true 不存在返回false

                 remove(intindex) 根据下表删除  并返回删除的对象     删除的下标不存在报错

                 remove(Object o) 根据指定的元素删除  并返回删除的结果【true/false】     删除的元素不存在不报错

                                  如果下标和存入的值是相同的,默认以下标来删除

                 clear() 清空集合中所有的元素

          

3.LinkeListTest

  特点:采用双向链表的存储方式,插入/删除元素的效率比较高

  方法:addFirst(Object o) 在集合的首部添加元素

       addLast(Object o) 在集合的尾部添加元素

       getFirst() 返回集合中第一个元素

       getLast() 返回集合中最后一个元素

       removeFirst() 删除并返回第一个元素

       removeLast() 删除并返回最后一个元素

 

Set

1.HashSet实现类

           特点:存放了一组无须且唯一的对象,取出时无法保证其顺序

           注意:HashSet判断唯一的对象,其实是调用Object类的equals方法判断的

           问题:两个对象,指向同一个人,我们只想存储一个对象就可以了

           解决办法:重写该存储对象的hashcode和equals方法

           内部执行判断流程:先调用对象的hashcode方法来求值;

           如果hashcode值没有存在过【没有重复】,表示该对象可以添加

           如果hashcode值相同,(还不能确定对象是否相同,因为不同的对象可能产生相同的hashcode值)

           还需要调用equals方法来进行下一步验证

           equals方法 返回true表示两个对象相同,返回false表示不相同

          

                   方法:add(Object o) 添加元素

                contains(Object 0) 判断集合中是否存在指定元素

                isEmpty()  判断集合中是否存在元素   存在返回false

                size() 获取集合的元素个数

                remove(Object 0);  删除指定的元素

2.TreeSet

           特点:存放了一组无须且唯一的对象,存取时可以指定顺序规则/存储对象时一定要指定排序规则

           注意:在treeset集合中添加自定义对象,必须实现  implements Comparable<添加对象的类型>

                 因为添加方法会使用compareTo方法来验证对象的排列位置。并验证对象是否重复

                 【如果返回0表示两个对象重复      一般都以唯一的属性进行排序】

          

           方法:first();  返回集合中排序的第一个元素

                 last()   返回集合中排序的最后一个元素

 

Map

1. HashMap实现类

           特点:一组键值对的存储方式【color:red】 一个键值对不能包含重复的键【color:red   color:yellow】

                 每个键只能对应一个值;不能保证映射的顺序。     线程不安全,效率高

          

          方法:put(Object o,Object o) 一键值对的方式添加元素

                get(Object key)  根据键返回关联的值【Object类型】 如果不存在指定的键  返回null

                remove(Object key) 根据指定的键删除 对应的键值对

                size() 返回元素个数

                keySet() 返回键的集合【set集合】

                values() 返回值得集合 【collention集合】

                containsValue(Object o) 判断集合中是否存在某个值

                containsKey(Object o) 判断集合中是否存在某个键

                clear();   清空集合

          

           注意:键不能重复     重复了将会被下一个所 覆盖

 

2.Hashtable实现类

           特点:与Hashmap相似 但是线程安全   效率低

           方法:与Hashmap 一样

 

3.TreeMap 实现类

           特点:底层是二叉数据结构  线程不安全  可用于给map集合中的键进行排序

           思路与TreeSet一致

 

迭代器

           Iterator

           方法:  hasNext()  判断是否存在一个可访问的元素

                 next()       返回指针指向的下一个元素

 

迭代器循环取数据 

Iterator it=hs.iterator();

                   while(it.hasNext()){

                            //取出下一个元素

                            Student stu=(Student) it.next();

                            System.out.println(stu.getId()+"\t"+stu.getName());

                   }

Collentions  工具类

升序                  Collections.sort(arr);

                  

查找某个集合中是否存在某个元素    存在的话找到并返回其下标  没找到返回负数

                   System.out.println(Collections.binarySearch(arr,"c"));

                   查找最大/最小值

                   System.out.println(Collections.max(arr));

                   System.out.println(Collections.min(arr));


1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 、 1资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READmE.文件(md如有),本项目仅用作交流学习参考,请切勿用于商业用途。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值