传智博客JAVA基础第十八天

1:数据结构(重点)
    (1)栈
        先进后出。
        举例:单行道的死胡同
    (2)队列
        先进先出。
        举例:地铁安检
    (3)数组
        数组是有编号的,从0开始编号,可以获取任意元素。
        优点:查询快
        缺点:增删慢
    (4)链表
        链表是有很多个节点组成的。
        每个节点又是由两部分组成:数据域和指针域。
        优点:增删快
        缺点:查询慢

2:List接口的实现类(重点)
    (1)List:元素有序,可以重复。
        |--ArrayList
            底层数据结构是数组,线程不安全。
            查询效率高,增删效率低。
        |--Vector
            底层数据结构是数组,查询效率高,增删效率低。
            线程安全。所以,查询效率也低。
        |--LinkedList
            底层数据结构是链表,线程不安全。
            查询效率低,增删效率高。

        什么情况下使用哪种集合呢?
            如果是用于查询或者遍历数据,那么就使用ArrayList。
            如果是用于大量的增删数据,那么就使用LinkedList。
            如果涉及到多线程的安全问题,那么就使用Vector。
            如果你不能确定情况,那么就使用ArrayList。
    (2)ArrayList(重点)
        没有特殊方法。就按照Collection或者List中的方法使用即可。
        A:ArrayList存储字符串并遍历。
        B:ArrayList存储自定义对象并遍历。
    (3)Vector
        有特殊方法:addElement,elementAt,Enumeration elements
        使用:可以和前面讲过的add,get,Iterator iterator方法对应。
              其实这就是集合框架对Vector进行的改进,升级。
        A:Vector存储字符串并遍历。
        B:Vector存储自定义对象并遍历。
    (4)LinkedList
        有特殊方法:addFirst,addLast,removeFirst,removeLast,getFirst,getLast
        A:LinkedList存储字符串并遍历。
        B:LinkedList储自定义对象并遍历。
    (5)案例
        A:去除集合中的重复元素。
            字符串
            自定义对象。
           在ArrayList中的判断底层依据的是equals方法。
        B:用LinkedList模拟栈或者队列数据结构。(了解)
            java提供了两个类:
            栈 Stack
            队列 ArrayDeque

3:泛型
    (1)直译:广泛的类型。
        是一种特殊的类型,它把指定类型的工作推迟代码声明并实例化类或方法的时候进行。
    (2)泛型的使用格式:
        <数据类型>
    (3)泛型的好处:
        A:避免了在运行时发生的类型转换异常
        B:避免了在使用的时候,遍历的时候的强制转换
        C:优化了程序设计
    (4)掌握泛型在集合类中的使用。(重点)
        在哪些集合类有使用呢?
        自己查看API。
    (5)泛型的位置(了解)
        A:泛型定义在类上
        B:泛型定义在方法上
        C:泛型定义在接口上

    使用泛型好处多,运行时候不出错。
    遍历不用强转换,方便程序设计者。

4:Set接口
    (1)Set接口特点:元素无序,元素无重复。
    (2)Set的实现类HashSet。
        A:存储字符串
        B:存储自定义对象。
            我们假设自定义对象中的同姓名和同年龄的人为同一个人。
            如何保证的呢?
            重写了hashCode方法和equals方法。
        
        C:HashSet是如何保证元素的唯一性的?(重点)
            在每次增加一个元素的时候,会首先去判断这个元素的哈希值
            是否和集合中存在的数据的哈希值一致。
            如果不一致,那么肯定是不同的元素。就会直接添加。
            如果一致,就继续根据equals方法进行判断。
            如果equals返回为true,元素就会被认为和集合中有重复元素,不会添加。
    (3)案例(重点)
        自己用HashSet存储一个自定义对象,并去除重复元素。
        重复到底是根据什么判断的,这个条件是可以根据你的需要定义。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值