java的List类
来源:互联网 发布:淘宝卖家怎么找达人 编辑:程序博客网 时间:2024/05/08 21:44
集合的体系:
------------| Collection 单例集合的根接口
----------------| List 如果是实现了List接口的集合类,具备的特点: 有序,可重复。
-------------------| ArrayList ArrayList 底层是维护了一个Object数组实现的。 特点: 查询速度快,增删慢。
-------------------| LinkedList LinkedList 底层是使用了链表数据结构实现的, 特点: 查询速度慢,增删快。
-------------------| Vector(了解即可) 底层也是维护了一个Object的数组实现的,实现与ArrayList是一样的,但是Vector是线程安全的,操作效率低。
----------------| Set 如果是实现了Set接口的集合类,具备的特点: 无序,不可重复。
-------------------| HashSet 底层是使用了哈希表来支持的,特点: 存取速度快.
-------------------| TreeSet 如果元素具备自然顺序 的特性,那么就按照元素自然顺序的特性进行排序存储。
有序: 集合的有序不是指自然顺序,而是指添加进去的顺序与元素出来的顺序是一致的。
List接口中特有方法:
添加
add(int index, E element)
addAll(int index, Collection<? extends E> c)
运行结果:
集合的元素:[张三, 李四, 王五, 赵六, 赵六]
获取:
get(int index)
indexOf(Object o)
lastIndexOf(Object o)
subList(int fromIndex, int toIndex)
修改:
set(int index, E element)
List接口中特有的方法具备的特点: 操作的方法都存在索引值。
只有List接口下面的集合类才具备索引值。其他接口下面的集合类都没有索引值。
运行结果:
集合的元素:[狗娃, 狗剩, 铁蛋, 赵本山]
迭代
listIterator()
ListIterator特有的方法:
添加:
hasPrevious() 判断是否存在上一个元素。
previous() 当前指针先向上移动一个单位,然后再取出当前指针指向的元素。
next(); 先取出当前指针指向的元素,然后指针向下移动一个单位。
---------------------------
add(E e) 把当前有元素插入到当前指针指向的位置上。
set(E e) 替换迭代器最后一次返回的元素。
运行结果:
集合的元素:[狗娃, 张三, 铁蛋, 美美]
练习: 使用三种方式遍历集合的元素.
第一种: 使用get方法遍历。
第二种: 使用迭代器正序遍历。
第三种: 使用迭代器逆序遍历。
运行结果:
======get方法遍历=======
张三,李四,王五,
======使用迭代器正序遍历==========
张三,李四,王五,
======使用迭代器逆序遍历==========
王五,李四,张三,
迭代器在变量元素的时候要注意事项: 在迭代器迭代元素 的过程中,不允许使用集合对象改变集合中的元素 个数,如果需要添加或者删除只能使用迭代器的方法进行操作。
如果使用过了集合对象改变集合中元素个数那么就会出现ConcurrentModificationException异常。
迭代元素 的过程中: 迭代器创建到使用结束的时间。
运行结果:
集合的元素:[张三, 李四, 王五, aa]
------------| Collection 单例集合的根接口
----------------| List 如果是实现了List接口的集合类,具备的特点: 有序,可重复。
-------------------| ArrayList ArrayList 底层是维护了一个Object数组实现的。 特点: 查询速度快,增删慢。
-------------------| LinkedList LinkedList 底层是使用了链表数据结构实现的, 特点: 查询速度慢,增删快。
-------------------| Vector(了解即可) 底层也是维护了一个Object的数组实现的,实现与ArrayList是一样的,但是Vector是线程安全的,操作效率低。
----------------| Set 如果是实现了Set接口的集合类,具备的特点: 无序,不可重复。
-------------------| HashSet 底层是使用了哈希表来支持的,特点: 存取速度快.
-------------------| TreeSet 如果元素具备自然顺序 的特性,那么就按照元素自然顺序的特性进行排序存储。
有序: 集合的有序不是指自然顺序,而是指添加进去的顺序与元素出来的顺序是一致的。
List接口中特有方法:
添加
add(int index, E element)
addAll(int index, Collection<? extends E> c)
import java.util.ArrayList;import java.util.List;public class Demo1 {public static void main(String[] args) {List list = new ArrayList();list.add("张三");list.add("李四");list.add("王五");list.add("赵六");list.add("赵六");System.out.println("集合的元素:"+ list);}}
运行结果:
集合的元素:[张三, 李四, 王五, 赵六, 赵六]
获取:
get(int index)
indexOf(Object o)
lastIndexOf(Object o)
subList(int fromIndex, int toIndex)
修改:
set(int index, E element)
List接口中特有的方法具备的特点: 操作的方法都存在索引值。
只有List接口下面的集合类才具备索引值。其他接口下面的集合类都没有索引值。
import java.util.ArrayList;import java.util.List;public class Demo2 {public static void main(String[] args) {List list= new ArrayList();list.add("狗娃");list.add("狗剩");list.add("铁蛋"); //把元素添加到集合的末尾处。list.add("狗娃");/* //添加方法list.add(1, "赵本山"); // 把元素添加到集合中的指定索引值位置上。List list2 = new ArrayList();list2.add("本山");list2.add("小沈阳");list.addAll(2,list2); //把list2的元素添加到list集合指定索引值的位置上。 *//*//获取的方法 System.out.println("get方法获取元素:"+list.get(1)); //根据索引值获取集合中的元素使用get方法遍历集合的元素:for (int i = 0; i < list.size() ; i++) {System.out.print(list.get(i)+",");}System.out.println("找出指定元素第一次出现在集合中 的索引值:"+ list.indexOf("本山"));System.out.println("找指定的元素最后一次出现在集合中的索引值:"+list.lastIndexOf("狗娃"));List subList = list.subList(1, 3); //指定开始与结束的索引值截取集合中的元素。System.out.println("子集合的元素是:"+ subList); */list.set(3, "赵本山"); //使用指定的元素替换指定索引值位置的元素。System.out.println("集合的元素:"+list);}}
运行结果:
集合的元素:[狗娃, 狗剩, 铁蛋, 赵本山]
迭代
listIterator()
ListIterator特有的方法:
添加:
hasPrevious() 判断是否存在上一个元素。
previous() 当前指针先向上移动一个单位,然后再取出当前指针指向的元素。
next(); 先取出当前指针指向的元素,然后指针向下移动一个单位。
---------------------------
add(E e) 把当前有元素插入到当前指针指向的位置上。
set(E e) 替换迭代器最后一次返回的元素。
import java.util.ArrayList;import java.util.List;import java.util.ListIterator;public class Demo3 {public static void main(String[] args) {List list = new ArrayList();list.add("狗娃");list.add("狗剩");list.add("铁蛋");list.add("美美");ListIterator it = list.listIterator(); //返回的是一个List接口中特有的迭代器//System.out.println("有上一个元素吗?"+ it.hasPrevious());//System.out.println("获取上一个元素:"+it.previous());//it.next();//System.out.println("获取上一个元素:"+ it.previous());/*while(it.hasNext()){it.next();}while(it.hasPrevious()){System.out.println("元素:"+ it.previous());}it.next();it.next();it.add("张三");*/it.next();it.next();it.set("张三");System.out.println("集合的元素:"+ list);}}
运行结果:
集合的元素:[狗娃, 张三, 铁蛋, 美美]
练习: 使用三种方式遍历集合的元素.
第一种: 使用get方法遍历。
第二种: 使用迭代器正序遍历。
第三种: 使用迭代器逆序遍历。
import java.util.List;import java.util.ArrayList;import java.util.ListIterator;public class Demo4 {public static void main(String[] args) {List list = new ArrayList();list.add("张三");list.add("李四");list.add("王五");System.out.println("======get方法遍历=======");for(int i = 0 ; i<list.size() ; i++){System.out.print(list.get(i)+",");}System.out.println("\r\n======使用迭代器正序遍历==========");ListIterator it = list.listIterator();//获取到迭代器while(it.hasNext()){System.out.print(it.next()+",");}System.out.println("\r\n======使用迭代器逆序遍历==========");while(it.hasPrevious()){System.out.print(it.previous()+",");}}}
运行结果:
======get方法遍历=======
张三,李四,王五,
======使用迭代器正序遍历==========
张三,李四,王五,
======使用迭代器逆序遍历==========
王五,李四,张三,
迭代器在变量元素的时候要注意事项: 在迭代器迭代元素 的过程中,不允许使用集合对象改变集合中的元素 个数,如果需要添加或者删除只能使用迭代器的方法进行操作。
如果使用过了集合对象改变集合中元素个数那么就会出现ConcurrentModificationException异常。
迭代元素 的过程中: 迭代器创建到使用结束的时间。
import java.util.ArrayList;import java.util.List;import java.util.ListIterator;public class Demo5 { public static void main(String[] args) {List list = new ArrayList();list.add("张三");list.add("李四");list.add("王五");ListIterator it = list.listIterator();//获取到迭代器/*while(it.hasNext()){System.out.print(it.next()+",");//it.add("aa"); // 把元素添加到当前指针指向位置list.add("aa"); // add方法是把元素添加到集合的末尾处的。//list.remove("张三");}*/it.next();list.add("aa");System.out.println("\r\n集合的元素:"+ list);}}
运行结果:
集合的元素:[张三, 李四, 王五, aa]
0 0
- java的List类
- java集合类List的使用
- javascript封装的类似java List类
- java中List的三个实现类
- java List集合类的用法
- Java——List的实现类
- java中的List结构的集合类
- java 常见List实现类的比较
- java之List的实现类ArrayList
- java的集合类List系列(一)
- JAVA List的倒序
- java List的用法
- java List的用法
- java List的用法
- java List的使用
- 【Java】List的使用
- java的list用法
- java的list排序
- Linux网络---TCP编程
- 【PHP】php输出
- php 命名空间
- 第十四周项目3——是否二叉排序树?
- android集成微信支付,脱坑篇
- java的List类
- js实现倒数几秒自动跳转
- 关于tableView分割线的那点事
- Python基础学习之基本数据结构List
- 【Mysql】积累二
- 机器学习week9ex8第一题
- 【PHP】PHP逐行读取数据
- CALayer相关文章
- js 兼容写法