List 接口常用子类及其特点
来源:互联网 发布:mac pro 魔兽世界 编辑:程序博客网 时间:2024/06/09 20:41
List 常用子类:
- Vector: 内部是数组数据结构,是同步的. 增删, 查询都很慢- ArrayList: 内部是数组数据结构,是不同步的,替代了 Vector,不同步的效率较高. 特点: 查询速度快- LinkedList: 内部是链接列表实现,链表数据结构,是不同步的,有角标. 特点: 增删元素的速度很快
Vector (了解)
- 取出元素的特有方法:
Enumeration elements();
Vector v = new Vector();v.addElement("abc1");v.addElement("abc2");v.addElement("abc3");Enumeration en = v.elements();while(en.hasMoreElements()){ System.out.println(en.nextElement());}
备注: Enumeration 接口和 Iterator 接口的功能是重复的, 新的实现优先考虑 Iterator 接口.
LinkedList
- 操作列表的开头和结尾
addFirst(); : 将指定元素添加到列表的开头addLast(); : 将指定元素添加到列表的结尾getFirst(); : 获取列表的第一个元素, 但不移除. 如果链表为空,抛出 NoSuchElementException 异常getLast(); : 获取列表的最后一个元素, 但不移除. 如果链表为空,抛出 NoSuchElementException 异常removeFirst(); : 获取列表的第一个元素, 但移除. 如果链表为空,抛出 NoSuchElementException 异常removeLast(); : 获取列表的最后一个元素, 但移除. 如果链表为空,抛出 NoSuchElementException 异常// JDK 1.6 以后升级offerFirst(); : 将指定元素添加到列表的开头offerLast(); : 将指定元素添加到列表的结尾peekFirst(); : 获取列表的第一个元素, 但不移除. 如果链表为空,返回 nullpeekLast(); : 获取列表的最后一个元素, 但不移除. 如果链表为空,返回 nullpollFirst(); : 获取列表的第一个元素, 但移除. 如果链表为空,返回 nullpollLast(); : 获取列表的最后一个元素, 但移除. 如果链表为空,返回 null
- 练习: 请使用 LinkedList 来模拟一个堆栈或者队列数据结构
// 分析:// 堆栈: 先进后出, First in Last Out, 简写为 FILO// 队列: 先进先出, First in First Out, 简写为: FIFO. (例如排队)// 我们应该描述这样一个容器, 给使用者提供一个容器对象完成这两种结构中的一种.class DuiLie { private LinkedList link; // 构造函数 public DuiLie(){ link = new LinkedList();} // 队列添加元素的功能 public void myAdd(Object obj){ link.addLast(obj);} public void myGet(){ return link.removeFrist();} public boolean isNull(){ return link.isEmpty();}}
ArrayList
- 存储自定义对象
// 自定义 Person 对象public class Person { private String name; private int age; public Person(){ super(); } public Person(String name, int age){ super(); this.name = name; this.age = age; } public String getName(){ return name; } public void setName(String name){ this.name = name; } public void getAge(){ return age; } public void setAge(int age){ this.age = age; }}// ArrayList 集合中存储自定义对象 Personpublic class ArrayListTest { public static void main(String[] args){ ArrayList al = new ArrayList(); al.add(new Person("lisi1",21)); al.add(new Person("lisi2",22)); al.add(new Person("lisi3",23)); al.add(new Person("lisi4",24)); Iterator it = al.iterator(); while(it.hasNext()){ System.out.println(it.next()); }}}// 输出结果为:// cn.itcast.p.bean.Person@7852e922// cn.itcast.p.bean.Person@4e25154f// cn.itcast.p.bean.Person@70dea4e// cn.itcast.p.bean.Person@5c647e05// 原因分析: add(Object obj); Person 对象存入 ArrayList 集合中,向上转型(多态)// 直接 it.next().getName(); 错误, 因为 Object 对象没有 getName() 方法// 升级:Iterator it = al.iterator();while(it.hasNext()){ Person p = (Person)it.next(); // 向下转型 System.out.println(p.getName()+" : " + p.getAge());}
ArrayList 集合中存储的是 Person 对象的引用
其他: ArrayList 集合不能存储基本数据类型
al.add(5); // 代表着: al.add(new Integer(5)); 自动装箱 // add() 方法的元素为 Object, Object obj = new Integer(5); 多态
参考资料
- JavaSE 基础视频(毕向东)
- JDK 1.6 中文文档
阅读全文
0 0
- List 接口常用子类及其特点
- List 接口常用子类及其特点
- Set 接口常用子类及其特点
- Set 接口常用子类及其特点
- Set 接口常用子类及其特点
- LIST接口及其子类
- List接口常用子类
- List的子类特点区别及其优缺点
- JAVA学习第三十四课 (常用对象API)—List集合及其子类特点
- List的子类特点
- List接口的常用子类(2)
- List接口的常用子类(3)
- List接口的常用子类:LinkedList
- 09-常用对象API(集合框架-ListIterator接口) 1 2 3 4 5 10-常用对象API(集合框架-List常用子类的特点)
- Map接口及其子类
- 17、Map接口及其常用子类(Hashtable、HashMap、WeakHashMap)
- List:(面试题List的子类特点)
- List接口常用实现类的特点和底层实现
- POJ
- LeetCode 13. Roman to Integer
- I
- 【005】Java语言(JDK长的命令行工具)
- Anaconda Navigator:could not find or load the QT platform plugin "window in"
- List 接口常用子类及其特点
- Java基础:Java 强制类型转换
- PAT (Basic Level) Practise (中文) 1047. 编程团体赛(20)
- 高德地图Web服务API简介
- 用Java语言编写程序:输出100以内的素数
- HDU 1106字符串处理
- ES6的Set数据结构
- LintCode 电话号码的字母组合
- Ubuntu下安装mySql以及WorkBench