寒假实训 Day06

集合框架(重点)

        数组存储的缺点

                1、数组一旦初始化后,其长度和类型就确定了;

                2、数组中提供的方法有限、对于增删改等操作不方便,效率也不高

                3、能够解决有序、可重复,但对于无序和不可重复的需求时,不能够满足

        基本概念

                当需要在java程序中记录单个数据内容时,则声明一个变量即可;

                当需要在java程序中记录多个类型相同的数据内容时,则声明一个一维数组即可;

                当需要在java程序中记录多个类型不同的数据内容时,则创建一个对象即可;

                当需要在java程序中记录多个类型相同的对象数据时,则创建一个对象数组即可;

                当需要在java程序中记录多个类型不同的对象数据时,则准备一个集合即可;

        集合框架

                Java中集合框架的页层框架是: java.util.Collection集合和java.util.Map集合。其中Collection集合中存取元素的基本单位是: 单个元素。其中Map集合中存取元素的基本单位是: 单对元素。

Collection集合(重点)

        常用方法

                boolean add(E e)       -      向集合中添加对象

                boolean contains(Object o)       -     判断是否包含指定对象

                boolean remove(Object o)       -      从集合中删除对象

                void clear();         -        清空集合

                int size();            -        返回包含对象的个数

                boolean isEmpty);     -        判断是否为空

                Object [] toArray();      -      将集台转换成数组

                将数组转换成集合 ?

                Iterator<E> iterator()     -      遍历集合中的元素

                Iterator对象称为迭代器,主要用于遍历Collection集合中的元素

                boolean hasNext()    -     如果仍有元素可以迭代,则返回 true。

                E next()        -          返回迭代的下一个元素

                注意: 集合对象每次调用iterator()方法都得到一个全新的选代器对象,默认游标都在集合的第一个元素之前。

                使用foreach循环遍历集合元素     - JDK1.5提供,可以选代访问collection和数组

                遍历时不需要获取Collection或数组的长度, 也不需要使用索引访问

                本质上,底层也是调用iterator

                格式:

                        for(要遍历的元素类型 遍历后自定义元素名称 : 要遍历的结构名称) {

                                System.out.println (遍历后自定义元素名称);

                        }

List集合

        基本概念

                java.util.List集合是Collection集合的子集合,该集合中允许有重复的元素并且有先后放入次序。该集合的主要实现类有: ArravList类、LinkedList类、Stack类、Vector类。其中ArrayList类的底层是采用动态数组进行数据管理的,支持下标访问,增删元素不方便。其中Linkedlist类的底层是采用双向链表进行数据管理的,访问不方便,增删元素方便。其中Stack类的底层是采用动态数组进行数据管理的,该类主要用于描述一种具有后进先出特征的数据结构,叫做栈(last in first out LIFO),其中Vector类的底层是采用动态数组进行数据管理的,该类与Arravlist类相比属于线程安全的类,效率比较低。

        常用的方法

                void add(int index, E element)     -     向集合中指定位置添加元素

                boolean addAll (int index, Collection <? extends>  c)    -    向集合中添加所有元素

                E get(int index)       -        从集合中获取指定位置元素

                E get(int index,  E element)       -      修改指定位置的元素

                E remove(int index)       -      删除指定位置的元素

                List<E> subList(int fromIndex, int toIndex); -获取子List,前闭后开

                注意 :  subList获取的List与原List占有相同的存储空间,对子List的操作会影响到原List.

                作业: 查询java.util.Stack类以及相关方法,实现将11、22、33、44、55依次入栈并打印,查看栈顶元素并打印,然后依次出栈并打印。

泛型机制

        基本概念

                通常情况下集合中可以存放不同类型的对象,是因为将所有对象都看做Obiect类型放入的,因此从集合中取出元素时也是Obiect类型,为了表达该元素真实的数据类型,则需要强制类型转换,而强制类型转换可能会引发类型转换异常。为了避免上述错误的发生,从jdk1.5开始增加泛型机制,也就 <数据类型> 的方式来明确要求该集合中可以存放的元素类型,若放入其它类型的元素则编译报错,如:

                        List <String>1t1  =  new  LinkedList<String>();

        泛型机制的本质

                泛型机制的本质就是参数化类型,也就是让数据类型作为参数传递,其中E相当于形式参数负责占位,而使用集合时<>中的数据类型相当于实际参数,实际参数主要用于给形式参数初始化,一旦初始化成功,以后所有的E全部被实参取代,如:

                // 其中i叫做形式参数,负责占位

                // int i = 5;

                // int i = 10:

                public void show(int i) (

                                ......

                }

                // 其中5叫做实际参数,给形参初始化

                show(5);

                show(10);

                其中E叫做形式参数,负责占位

                E = String;

                E = Student:

                public interface List<E> {

                             ......

                   }

                // 其中string叫做实际参数,给形参初始化

                List<String> 1t1 =...;

                List<Student> 1t2 = ...;

Queue集合(重点)

        基本概念

                java.util.Queue集合是Collection集合的子集合,与List集合属于平级关系。该集合的主要用于描述具有先进先出特征的数据结构,叫做队列 (first in first out FIFO) 该集合的主要实现类是LinkedList类,因为该类在增删方面比较有优势。

        常用的方法

                boolean add ( E e )        -       将指定的元素插入此队列 ( 如果立即可行且不会违反容量限制) ,在成功时返回 true,如果当前没有可用的空间,则抛出 IllegalStateException。

                E element ()       -     获取,但是不移除此队列的头。

                boolean offer(E e)     -      将指定的元素插入此队列(如果立即可行目不会违反容量限制), 当使用有容量限制的队列时,此方法通常要优于 add(E),后者可能无法插入元素,而只是抛出一个异常

                E peek()     -     获取但不移除此队列的头; 如果此队列为空,则返回 null。

                E poll()     -     获取并移除此队列的头,如果此队列为空,则返回 null。

                E remove()      -     获取并移除此队列的头。

                                                   抛出异常                                返回特殊值

                插入                              add(e)                                   offer(e)

                移除                              remove ()                              poll()

                检查                              element()                              peek()

                练习: 准备一个Queue集合,将数据11、22、33、44、55依次入队并打印,然后查看队首元素并打印,然后将队中所有数据依次出队并打印。

                练习思考: 准备两个Stack对象,将数据11、22、33、44、55从第一个栈中进去再取出来,然后再从第二个栈中进去再取出来。

Set集合(重点)

        基本概念

                java.util.Set集合是Collection集合的子集合,与List集合平级。该集合中元素没有先后放入次序,并且不允许重复,该集合的主要实现类是: HashSet类和TreeSet类,其中HashSet类的底层是采用哈希表进行数据管理的。其中TreeSet类的底层是采用二叉树进行数据管理的。

        常用的方法

                参考Collection集合中的方法即可!

                练习: 准备一个Set集合指向HashSet对象,向该集合中添加元素"two"并打印,再向集合中添加元素”one"并打印,再向集合中添加元素”three"并打印,再向集合中添加”one"并打印。

                注意: 将对象加入HashSet集合中时,需要获取对象的哈希码值通过哈希算法索引到对应的存储空间

                练习 : 随机生成10个1-20之间的随机数放入Set集合中并打印

Map集合(重点)

        基本概念

                java.util.Map集合中存取元素的基本单位是: 单对元素,其中类型参数如下:

                K - 此映射所维护的键(Key)的类型,相当于目录。 V - 映射值(Value)的类型,相当于内容。

                该集合中key是不允许重复的,而且一个key只能对应一个value。该集合的主要实现类有: HashMap类和TreeMap类。

        常用的方法

                V  put (K key,V value)   -   将key - Value对 存入Map, 若集合中已经包含该Key,则替换该key所对应的Value, 返回值为该Key原来所对应的Value,若没有则返回null。

                V  get(Object key)   -  返回指定键所射的值; 如果对于该键来说,此映射不包含任何映射关系,则返回null。

                boolean  containsKey ( Object key)    -   如果此映射包含对于指定键的映射关系,则返回 true.

                boolean containsValue(Object value)    -   如果此映射将一个或多个键映射到指定值,则返回 true。

                V  remove(Object key)    -   从此映射中移除指定键的映射关系(如果存在)。

Map集合的遍历方式

                方式一:自动调用toString方法

                方式二:调用keySet方法获取Map集合中所有的key

                方式三:调用entrySet方法获取Map集合中所有的键对

                Map集合是面向查询优化的数据结构,在大数据量情况下有着优良的查询性能,经常用于根据key检索value的业务场景。

  • 16
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值