java List集合
来源:互联网 发布:淘宝二手iphone能买吗 编辑:程序博客网 时间:2024/06/06 01:36
java List集合
List集合是一个元素有序,可以重复的集合,元素默认按照添加顺序设置其索引,集合可以通过索引来对集合中的元素进行操作。(索引从0开始)
ArrayList和Vector类
ArrayList和Vectory是List接口两个常用实现类,它们的底层都是数组,所以它们封装了一个动态允许再分配的Object[]数组,创建集合的时候可以指定数组的长度,如果放入集合的元素超过数组长度,数组的长度初始长度会自动增加。如果不指定集合长度,默认值是10。
ArrayList和Vector还提供了两个方法来重新分配Object[]数组
void ensureCapacity(int minCapacity):
将ArrayList和Vector集合的Object[]数组长度增加大于等于minCapacity值。void trimToSize():
调整ArrayList和Vector集合的Object[]数组长度为当前元素个数。调用该方法可以减少集合对象占用的存储空间
ArrayList和Vector最显著的区别是:ArrayList是线程不安全的,Vector线程是安全的,所以Vector的性能比ArrayList低。Vector是比较古老一个集合,具有很多的缺点所以不推荐使用。
java操作数组有一个工具类Arrays,该工具类提供了asList(Object.. a)方法,该方法可以把一个数组转换成一个List集合,这个集合即不是ArrayList实现类的实例,也不是Vector实现类的实例,而是Arrays的内部类ArrayList的实例。Arrays.ArrayList是一个固定长度的List集合,改集合里的元素不可增加,删除,只能遍历。
public class Test{public static void main(String[] args){String[] array = {"aa", "bb", "cc"};List list = Arrays.asList(array);System.out.println(list);list.add("dd"); (1)System.out.println(array);}}
程序编译不会报错,但程序执行到(1)时会报java.lang.UnsupportedOperationException
LinkedList类
LinkedLsit也是List接口实现类,除此之外,还实现了Deque接口,可以被 当成双端队列来使用,因此即可以你被当成栈来使用,也可以当成队列使用。
public class Test{public static void main(String[] args){LinkedList linkedList = new LinkedList();linkedList.addFirst("0"); // 添加元素到列表开头linkedList.add("1"); // 在列表结尾添加元素linkedList.add(2,"2"); // 在指定位置添加元素linkedList.addLast("3"); // 添加元素到列表结尾System.out.println("LinkedList: "+ linkedList);System.out.println("getFirst():" + linkedList.getFirst()); // 返回此列表的第一个元素System.out.println("getLast(): "+ linkedList.getLast()); // 返回此列表的最后一个元素 System.out.println("removeFirst(): " + linkedList.removeFirst()); // 移除并返回此列表的第一个元素 System.out.println("removeLast():" + linkedList.removeLast()); // 移除并返回此列表的最后一个元素System.out.println("After remove:" + linkedList); System.out.println("contains(1) is :" + linkedList.contains("1")); // 判断此列表包含指定元素,如果是,则返回true System.out.println("size is : " + linkedList.size()); // 返回此列表的元素个数/************************** 位置访问操作 ************************/System.out.println("------------------位置访问操作-----------------------");linkedList.set(1, "3"); // 将此列表中指定位置的元素替换为指定的元素System.out.println("After set(1, 3):" + linkedList); System.out.println("get(1): " + linkedList.get(1)); // 返回此列表中指定位置处的元素/************************** Queue操作 ************************/System.out.println("------------------Queue操作-----------------------");System.out.println("peek():" + linkedList.peek()); // 获取但不移除此列表的头System.out.println("element(): " + linkedList.element()); // 获取但不移除此列表的头linkedList.poll(); // 获取并移除此列表的头System.out.println("After poll():" + linkedList);linkedList.remove();System.out.println("After remove():" + linkedList); // 获取并移除此列表的头linkedList.offer("4");System.out.println("After offer(4):" + linkedList); // 将指定元素添加到此列表的末尾 /************************** Deque操作 ************************/System.out.println("-----------------Deque操作 ------------------------");linkedList.offerFirst("2"); // 在此列表的开头插入指定的元素System.out.println("After offerFirst(2):" + linkedList);linkedList.offerLast("5"); // 在此列表末尾插入指定的元素System.out.println("After offerLast(5):" + linkedList);System.out.println("peekFirst(): "+ linkedList.peekFirst()); // 获取但不移除此列表的第一个元素System.out.println("peekLast(): "+ linkedList.peekLast()); // 获取但不移除此列表的第一个元素linkedList.pollFirst(); // 获取并移除此列表的第一个元素System.out.println("After pollFirst():" + linkedList);linkedList.pollLast();// 获取并移除此列表的最后一个元素System.out.println("After pollLast():" + linkedList);linkedList.push("2"); // 将元素推入此列表所表示的堆栈(插入到列表的头)System.out.println("After push(2):" + linkedList);linkedList.pop(); // 从此列表所表示的堆栈处弹出一个元素(获取并移除列表第一个元素)System.out.println("After pop():" + linkedList);}}
LinkedList: [0, 1, 2, 3]getFirst(): 0getLast(): 3removeFirst(): 0removeLast(): 3After remove:[1, 2]contains(1) is :truesize is : 2------------------位置访问操作-----------------------After set(1, 3):[1, 3]get(1): 3------------------Queue操作-----------------------peek(): 1element(): 1After poll():[3]After remove():[]After offer(4):[4]----------------Deque操作 ------------------------After offerFirst(2):[2, 4]After offerLast(5):[2, 4, 5]peekFirst(): 2peekLast(): 5After pollFirst():[4, 5]After pollLast():[4]After push(2):[2, 4]After pop():[4]
LinkedList底层是链表,所以查询性能较差,插入删除性能较好。ArrayList和Vector底层是数组,所以遍历查询性能较好,插入删除性能较差。但总的来说ArrayList的性能比LinkedList的性能要好,因此大部分的时候建议考虑使用ArrayList。
- JAVA集合-List集合
- Java集合----List集合
- java集合------List集合总结
- Java集合之List集合
- Java集合—List集合
- java 集合 list
- java集合----------List
- java------集合List
- JAVA集合之List
- Java中的List集合
- java 操作list集合
- Java集合List接口
- Java List集合操作
- JAVA集合框架-List
- Java集合<二>List
- Java集合之List
- java的list集合
- Java集合之List
- js定时器
- 两个类之间转换JSON.parseObject(
- 【Android 数据业务解析】APN参数创建
- 前后端分离之JWT用户认证
- android注意设置httpclient连接数
- java List集合
- 表格操作总结
- [论文学习]An Effective Approach for Mining Mobile User Habits:一种高效挖掘移动用户习惯的方法
- 购物车的几种实现方式
- 通过反射动态加载DLL
- 架构师之路(十五)
- 日常笔记------JUnit(二)
- 心血来潮 犯个罪 把彼岸图网给爬了
- Go编程基础—Sublime Text3 + Golang搭建开发环境