黑马程序员-java中集合常用的类之一List类
来源:互联网 发布:淘宝5年老店条件 编辑:程序博客网 时间:2024/05/17 00:54
一、 集合:集合是一种容器,长度是可变的,可以存储任意类型的对象。
集合分类:Collection接口下常用类型有两种:List Set
List:有存储顺序的,可以重复的;
Set:没有存储顺序的,不可以重复;
List集合:
ArrayList: 数组结构,查找快,增删慢;由于增删的时候需要创建或者拷贝数组, 所以速度较慢;而查找是直接操作内存,获取数组中的元素。
LinkedList: 链表结构,增删快,查找慢;增加的时候只要让最后一个元素记住 新来的元素即可,删除的时候只要让前一个记住后一个,后一个记住前一个, 查找的时候需要逐个查找,所以速度较慢。
List常用方法:
boolean add(E e):向集合中添加一个对象,如果改变了集合的结构,返回true, 集合可以添加任意类型的对象。
Object get(int index):从集合中获取指定索引上的对象.
Object remove(int index):删除指定索引上的元素, 并且返回这个元素
Object set(int index, Object obj):将集合中指定位置的元素替换为指定对象
集合的遍历:
for循环:循环size()次,每次调用get(int)方法获取一个元素;
private static void iterate1(List list) {
for (int i = 0; i < list.size(); i++)
System.out.println(list.get(i)); // 获取集合中的元 素
}
只有List可以用
迭代器:使用iterator()方法获取一个Iterator对象(迭代器),调用hasNext() 方法判断是否下一个元素,调用next()方法获取元素.
private static void iterate2(List list) {
Iterator iter = list.iterator(); // 获取list对象 的迭代器(Iterator接口的子类对象), 内部有一个指针, 默认指 向第一个元素之前的位置
while (iter.hasNext()) // 判断是否包含 下一下元素
System.out.println(iter.next()); // 将指针向后移动一 位, 并返回这个位置上的元素
}
List和Set通用
增强for循环:for (类型 变量名 : 容器) { 循环体 }, 容器长度是多少循环体 就执行多少次, 变量每次引用容器中的一个元素.
private static void iterate3(List list) {
for (Object obj : list) // 增强for循环, for (类型 变量名 : 容器) { 循环体 }
System.out.println(obj);
}
List和Set通用
遍历时删除元素:
for循环:由于在List集合中删除元素之后, 后面的元素会向前移动, 所以每次 删除之后需要将循环遍历-1
for (int i = 0; i < list.size(); i++) {
Person p = (Person) list.get(i);
if (p.getAge() == 19)
list.remove(i--); // 删除元素后, 后面的元素会向前移动, 这时我们将指针也向前移动一位
}
System.out.println(list);
细节:由于list.get(i)返回来的对象为Object,所以需要强制转换成子 类才能使用子类的特有属性,如果集合list用泛型定义,则可省去强制转换 的麻烦。
迭代器:迭代器在使用的过程中不允许修改集合, 如果要删除, 必须使用迭代 器的remove()方法
Iterator iter = list.iterator();
while (iter.hasNext()) {
Person p = (Person) iter.next();
if (p.getAge() == 19)
iter.remove(); // 在使用迭代器的时候, 不能修改集合中 的结构, 如果要删除, 需要使用迭代器的remove()方法
}
System.out.println(list);
细节:由于iter.next()返回来的对象为Object,所以需要强制转换成子 类才能使用子类的特有属性,即使这里用泛型定义集合,也必须重新定义 Person,因为iter.next()出现一次,就会指针指向下一个的。
增强for循环:无法在循环过程中修改集合;增强for循环内部就是使用迭代器, 在使用的过程中不能改变原集合. 由于无法获得迭代器, 所以增强for循环 不能操作集合.
泛型:JDK5之后支持带有泛型的类, 集合上如果加了泛型, 只能存储同一类型的 数据, 获取数据时的类型也被指定了,这样做避免了一些不安全因素, 而且省去了 强转的麻烦。格式如下:List<String> list = new ArrayList<String>();JDK1.7版本以 后后面的<>可以省掉。
---------------------- <a href="http://edu.csdn.net/heima" target="blank">android培训</a>、<a href="http://edu.csdn.net/heima" target="blank">java培训</a>、期待与您交流! ----------------------
- 黑马程序员-java中集合常用的类之一List类
- 黑马程序员 Java中集合类的区别
- 【黑马程序员】java中集合类说明与区别
- map,set,list,JAVA中集合类
- Java中集合容器类List和Set的用法
- Java中集合容器类List和Set的用法
- Java中集合容器类List和Set的用法
- Java中集合容器类List和Set的用法
- Java中集合容器类List和Set的用法
- java中集合常用类及其详解
- 黑马程序员:java中集合的一些小知识
- 黑马程序员+对Java中集合框架的总结
- 黑马程序员_Java中集合的应用
- java中集合类的总结
- 关于java中集合类的理解
- Java中集合类的对比总结
- java中集合类的用法详解
- Java中集合类的介绍
- power Designer 数据库建模
- Tar打包、压缩与解压缩到指定目录的方法
- sed删除文件中的每行前n个字符
- 银行卡网络安全系统的三级密钥体系
- java 方阵
- 黑马程序员-java中集合常用的类之一List类
- hdu 1018 Stirling 求阶乘位数
- dwr官方文档
- sicily--1046. Plane Spotting
- SQL Server2000基础
- Ibatis中#和$两个符号的使用区别
- innodb innodb_adaptive_hash_index
- 深入浅出理解 BOF和EOF
- Java版排列组合工具类 - Java Permutation and Combination Tools