一、ArrayLIst集合
ArrayList的特点
- ArrayList实现了Collection接口
- ArrayList内部封装了一个Object类型的对象,初始长度为10,且长度可变
- ArrayList集合使用数组实现所以查询快,但是增删慢(因为需要移动元素)
- ArrayList是不能保证线程安全的
1.add(Element element) 向列表的尾部添加指定的元素。
2.size() 返回列表中的元素个数。
3.get(int index) 返回列表中指定位置的元素,index和数组索引一样从0开始。
ArrayList<String> arrayList = new ArrayList<String>(); //<String>泛型表示集合中存的是字符串形式的元素。arrayList .add("Abc"); //add()用于向List集合容器中添加元素。arrayList .add("abc");System.out.println(arrayList);System.out.println(arrayList.size()); //size()用于获取arrayList中有多少个元素。System.out.println(arrayList.get(1)); //get()获取指定索引(从0开始)位置的元素。
输出结果 :
[Abc, abc]
2
abc
4.add(int index, Object element) 在列表的指定位置(从0开始)插入指定元素
注意:在不合法的位置添加元素会报索引越界的异常(java.lang.IndexOutOfBoundsException)
ArrayList<String> arrayList = new ArrayList<String>();arrayList.add("123");arrayList.add("456");System.out.println(arrayList);arrayList.add(1, "这里的索引下标为壹"); //在指定位置添加元素,原来位置的元素后置。System.out.println(arrayList);
输出结果:
[123, 456]
[123, 这里的索引下标为壹, 456]
5.set(int i, Element element) 将索引为i的元素的值,改为element
ArrayList<String> arrayList = new ArrayList<String>();arrayList.add("123");arrayList.add("456");System.out.println(arrayList);arrayList.set(1, "四五六");System.out.println(arrayList);
输出结果:
[123, 456]
[123, 四五六]
6.clear() 从列表中移除所有元素。
7.isEmpty() 判断列表是否包含元素,不包含元素则返回 true,否则返回false。
ArrayList<String> arrayList = new ArrayList<String>();arrayList.add("123");arrayList.add("456");System.out.println(arrayList);System.out.println(arrayList.isEmpty());arrayList.clear();System.out.println(arrayList);System.out.println(arrayList.isEmpty());
输出结果:
[123, 456]
false
[]
true
8.contains(Element element) 如果列表包含指定的元素,则返回 true。
ArrayList<String> arrayList= new ArrayList<String>();arrayList.add("123");arrayList.add("456");System.out.println(arrayList.contains("123"));System.out.println(arrayList.contains("789"));
输出结果:
[123, 456]
true
false
9.remove(int index) 移除列表中指定位置的元素,并返回被删元素,被删除元素后面的元素索引都会减一。
ArrayList<String> arrayList= new ArrayList<String>();arrayList.add("123");arrayList.add("456");arrayList.add("789");System.out.println(arrayList);System.out.println("索引为2的元素为:"+arrayList.get(2));System.out.println("删除的元素为:"+arrayList.remove(1));System.out.println(arrayList);System.out.println("索引为1的元素为:"+arrayList.get(1));
输出结果:
[123, 456, 789]
索引为2的元素为:789
删除的元素为:456
[123, 789]
索引为1的元素为:789
10.remove(Element eleme耐他)从ArrayList集合中移除值为element的元素。移除成功返回true,否则返回false。(如果含多个值为element的元素仅移除第一个)
ArrayList<String> arrayList= new ArrayList<String>();arrayList.add("123");arrayList.add("789");arrayList.add("456");arrayList.add("789");arrayList.add("789");System.out.println(arrayList);System.out.println("删除以一个789成功了吗?:"+arrayList.remove("789"));System.out.println("删除444成功了吗?"+arrayList.remove("444"));System.out.println(arrayList);
输出结果:
[123, 789, 456, 789, 789]
删除以一个789成功了吗?:true
删除444成功了吗?false
[123, 456, 789, 789]
11.遍历ArrayList集合
<1>迭代器方法
ArrayList<String> arrayList= new ArrayList<String>();arrayList.add("123");arrayList.add("789");arrayList.add("456");arrayList.add("789");arrayList.add("789");Iterator<String> items = arrayList.iterator();while (items.hasNext()){//判断是否还有元素System.out.print(items.next()+" ");}System.out.println("\n*******************");while (items.hasNext()){System.out.print(items.next());}
输出结果:
123 789 456 789 789
*******************
注意:使用这种方法遍历一侧后迭代器里就没有数据了,所以第二个while里面没有输出
<2>增强for循环
ArrayList<String> arrayList = new ArrayList<String>();arrayList.add("123");arrayList.add("789");arrayList.add("456");arrayList.add("789");arrayList.add("789");for (String name : arrayList) { //使用foreach进行遍历。System.out.println(name);}
输出结果:
123
789
456
789
789
<3>for循环
ArrayList<String> arrayList= new ArrayList<String>();arrayList.add("123");arrayList.add("789");arrayList.add("456");arrayList.add("789");arrayList.add("789");for (int i = 0; i < arrayList.size(); i++) { //用size方法获取长度。System.out.println(arrayList.get(i)); //用get方法通过索引获取值。}
输出结果:
123
789
456
789
789
二、LinkedList集合
1.LinkedList集合的特点
- LinkedlList是集合的—个接口Collection的实现类
- LinkedList集合底层实现是双向链表所以的增删快,但是查询慢
- LinkedList线程不安全
2.向LinkedList集合添加元素。
boolean add(int index,Object element) 指定位置插入。 void addFirst(E element) 元素附加到列表的头部 void addLast(E element) 元素附加到列表的尾部
boolean add(Object element) | 在列表的尾部添加元素,有返回值 |
boolean add(int index,Object element) | 指定位置插入元素 |
void addFirst(E element) | 在列表的头部添加 |
void addLast(E element) | 在列表的尾部添加元素,无返回值 |
LinkedList<String> linkedList = new LinkedList<>();linkedList.add("1");linkedList.add("2");System.out.println(linkedList.add("3"));linkedList.addFirst("4");linkedList.addFirst("5");linkedList.addLast("6");linkedList.add(2,"9");System.out.println(linkedList);
输出结果:
true
[5, 4, 9, 1, 2, 3, 6]
3.从LinkedList中获取数据
LinkedList<String> linkedList = new LinkedList<>();linkedList.add("1");linkedList.add("2");linkedList.add("4");linkedList.add("5");linkedList.addLast("6");System.out.println(linkedList);System.out.println("获取索引值为1的元素:"+linkedList.get(1));System.out.println("链表的第一个元素:"+linkedList.getFirst());System.out.println("链表的最后一个元素:"+linkedList.getLast());
输出结果:
[1, 2, 4, 5, 6]
获取下标为1的元素:2
链表的第一个元素:1
链表的最后一个元素:6
4.查询目标元素是否在LinkedList中
boolean contains(Object element)如果元素存在于列表中,存在返回true。
LinkedList<String> linkedList = new LinkedList<>();linkedList.add("1");linkedList.add("2");linkedList.add("4");linkedList.add("5");linkedList.addLast("6");System.out.println(linkedList);System.out.println("是否含有1:"+linkedList.contains("1"));System.out.println("是否含有7:"+linkedList.contains("7"));
输出结果:
[1, 2, 4, 5, 6]
是否含有1:true
是否含有7:false
5.修改指定位置的元素值
set(int Index,E element);
LinkedList<String> linkedList = new LinkedList<>();linkedList.add("1");linkedList.add("2");linkedList.add("4");linkedList.add("5");linkedList.addLast("6");System.out.println(linkedList);linkedList.set(2,"两");System.out.println(linkedList);
输出:
[1, 2, 4, 5, 6]
[1, 2, 两, 5, 6]
6.删除LinkedList中的元素
下表的删除函数都会返回被删除的元素的值
E remove() | 删除第一个元素,就是调用了removeFirst() |
E remove(int location) | 删除指定位置的元素 |
E removeFirst() | 删除并返回链接列表的头部一个元素 |
E removeLast() | 删除并返回链接列表的尾部一个元素 |
LinkedList<String> linkedList = new LinkedList<>();linkedList.add("1");linkedList.add("2");linkedList.add("4");linkedList.add("5");linkedList.addLast("6");System.out.println(linkedList);System.out.println("删除第一个元素"+linkedList.remove());System.out.println("删除索引为2的元素"+linkedList.remove(2));;System.out.println(linkedList);
输出:
[1, 2, 4, 5, 6]
删除第一个元素1
删除索引为2的元素5
[2, 4, 6]
7.其他LinkedList常用方法
clear() | 清空LinkedList集合 |
size() | 返回链表节点数 |
8.LinkedList的遍历方法和ArrayList相同这里就不多赘述了