博客
关于我
集合 List
阅读量:283 次
发布时间:2019-03-03

本文共 1633 字,大约阅读时间需要 5 分钟。

contains 底层是equals   比较对象是否相同必须重写equals方法,否则比较的是地址值 
1:List的子类
 (1)List的子类特点
  ArrayList:
   底层数据结构是数组,查询快,增删慢
   线程不安全,效率高
  Vector:
   底层数据结构是数组,查询快,增删慢
   线程安全,效率低
  LinkedList:
   底层数据结构是链表,查询慢,增删快
   线程不安全,效率高
 (2)ArrayList
  A:没有特有功能需要学习
  B:案例
   a:ArrayList存储字符串并遍历
   b:ArrayList存储自定义对象并遍历
 (3)Vector
  A:有特有功能
   a:添加
    public void addElement(E obj)  -- add()
   b:获取
    public E elementAt(int index)  -- get()
    public Enumeration<E> elements() --  iterator()
  B:案例
   a:Vector存储字符串并遍历
   b:Vector存储自定义对象并遍历
 (4)LinkedList
  A:有特有功能 
   a:添加
    addFirst()
    addLast()
   b:删除
    removeFirst()
    removeLast()
   c:获取
    getFirst()
    getLast()
  B:案例
   a:LinkedList存储字符串并遍历
   b:LinkedList存储自定义对象并遍历
 (5)案例:
  A:去除集合中的多个字符串的重复元素
   如果字符串的内容相同,即为重复元素
  B:去除集合中的多个自定义对象的重复元素
   如果自定义对象的成员变量值都相同,即为重复元素
  C:用LinkedList模拟一个栈数据结构的集合类,并测试。
   你要定义一个集合类,只不过内部可以使用LinkedList来实现。
2:泛型
 (1)泛型概述
  是一种把明确类型的工作推迟到创建对象或者调用方法的时候才去明确的特殊的类型。
 (2)格式:
  <数据类型>
  注意:该数据类型只能是引用类型。
 (3)好处:
  A:把运行时期的问题提前到了编译期间
  B:避免了强制类型转换
  C:优化了程序设计,解决了黄色警告线问题,让程序更安全
 (4)泛型的前世今生
  A:泛型的由来
   Object类型作为任意类型的时候,在向下转型的时候,会隐含一个转型问题
  B:泛型类
  C:泛型方法
  D:泛型接口
  E:泛型高级通配符
   ?
   ? extends E
   ? super E
 (5)我们在哪里使用呢?
  一般是在集合中使用。
 
3:增强for循环(掌握)
 (1)是for循环的一种
 (2)格式:
  for(元素的数据类型 变量名 : 数组或者Collection集合的对象) {
   使用该变量即可,该变量其实就是数组或者集合中的元素。
  }
 (3)好处:
  简化了数组和集合的遍历
 (4)弊端
  增强for循环的目标不能为null。建议在使用前,先判断是否为null。
  
4:静态导入
 (1)可以导入到方法级别的导入
 (2)格式:
  import static 包名....类名.方法名;
 (3)注意事项:
  A:方法必须是静态的
  B:如果多个类下有同名的方法,就不好区分了,还得加上前缀。
   所以一般我们并不使用静态导入,但是一定要能够看懂。
 
5:可变参数
 (1)如果我们在写方法的时候,参数个数不明确,就应该定义可变参数。
 (2)格式:
  修饰符 返回值类型 方法名(数据类型... 变量) {}
  
  注意:
   A:该变量其实是一个数组名
   B:如果一个方法有多个参数,并且有可变参数,可变参数必须在最后
 (3)Arrays工具类的一个方法
  asList()把数组转成集合。
  注意:这个集合的长度不能改变。
6:练习(掌握)
 A:集合的嵌套遍历
 B:产生10个1-20之间的随机数,要求随机数不能重复
 C:键盘录入多个数据,以0结束,并在控制台输出最大值
 
7:要掌握的代码
 集合存储元素,加入泛型,并可以使用增强for遍历。

转载地址:http://xcql.baihongyu.com/

你可能感兴趣的文章
golang中interface的一些语法缺陷的改进
查看>>
vue-router路由 学习笔记
查看>>
数据结构与算法之栈
查看>>
【数据库】第七章课后题
查看>>
第四章 串、数组和广义表 —— BF算法和KMP算法
查看>>
[选拔赛1]花园(矩阵快速幂),JM的月亮神树(最短路),保护出题人(斜率优化)
查看>>
DLA:一种深度网络特征融合方法
查看>>
leetcode114(二叉树展开为链表)
查看>>
java —— static 关键字
查看>>
在 Python 调试过程中设置不中断的断点 | Linux 中国
查看>>
AI 系统向自动化编码迈进 | Linux 中国
查看>>
使用 Jupyter Notebooks 构建一个远程管理控制台 | Linux 中国
查看>>
使用开源可视化工具来理解你的 Python 代码 | Linux 中国
查看>>
【2021 ECUG Con】聚势而来,与你相约花开时
查看>>
硬核观察 | 有人在比特币骗局中损失了 10 个比特币
查看>>
FreeDOS 的简单介绍 | Linux 中国
查看>>
使用 top 命令了解 Fedora 的内存使用情况 | Linux 中国
查看>>
怎样解决 “sub process usr bin dpkg returned an error code 1” 错误
查看>>
Bat:一种具有语法高亮和 Git 集成的 Cat 类命令 | Linux 中国
查看>>
Linux 上最好的五款音乐播放器 | Linux 中国
查看>>