目录
集合概述
创建集合的原因:
集合框架
编辑
Collection接口
List 接口及实现类
实现类
数组与链表
ArrayList的常用方法
增加:
删除:
替换:
判断:
查询:
转换:
List接口集合迭代
● for循环遍历
● 增强for循环的遍历
● 迭代器遍历(Iterator)
LinkedList的常用方法
增加
判断
查询
删除
集合概述
创建集合的原因:
- 当我们需要保存一组一样(类型相同)的元素的时候,我们应该使用一个容器 来存储,数组就是这样一个容器,但数组一旦定义,长度将不能再变化。
- ●然而在我们的开发实践中,经常需要保存一些变长的数据集合,于是,我们需 要一些能够动态增长长度的容器来保存我们的数据, 而我们需要对数据的保存的逻辑可能各种各样,于是就有了各种各样的数据结 构。Java中对于各种数据结构的实现,就是我们用到的集合。
集合框架
Java的集合框架是由很多接口、抽象类、具体类组成的,都位于java.util包中。
Collection接口
● Collection 接口定义了存取一组对象的方法,其子接口Set和List分别定义了 存储方式。
● List 中的数据有顺序(添加顺序)且可以重复。
● Set 中的数据不可以重复
List 接口及实现类
实现类
List接口继承了Collection接口,有三个实现的类
ArrayList
数组列表,底层采用数组存储。查询快,中间增删慢
LinkedList
链表列表,底层采用链表存储。查询慢,中间增删快
Vector
数组列表,添加同步锁,线程安全
数组与链表
ArrayList是长度可变的数组,在内存中分配连续的空间。
遍历元素和随机访问元素的效率比较
0 | 1 | 2 | 3 | 4 | 5 | |
aaaa | dddd | cccc | eeee | dddd |
LinkedList采用链表存储方式,插入、删除元素时效率比较高
ArrayList的常用方法
增加:
- add(E element)
- add(int index, E element)
- addAll(Collection c)
eg. ArrayList<String> arryList =new ArrayList(); ArrayList<String> arrayList1=new ArrayList(); arrayList1.add("h"); arryList.add("a"); arryList.add("b"); arryList.add("c"); arryList.add("d");//向集合末尾添加元素 arryList.add(1, "w");//向指定位置添加元素 arryList.addAll(arrayList1);//把另一个集合数据添加进来 System.out.println(arryList);
删除:
-
remove(int index)
- remove(Object o)
- clear()
ArrayList<String> arryList =new ArrayList(); ArrayList<String> arrayList1=new ArrayList(); arrayList1.add("h"); arryList.add("a"); arryList.add("b"); arryList.add("c"); arryList.add("d"); System.out.println(arryList.remove(2));//根据索引删除对应的元素 并返回删除的元素 System.out.println(arryList.remove("a"));//根据内容删除第一次匹配的元素,删除成功返回true,反之,返回false;
替换:
set(int index, E element)
ArrayList<String> arryList =new ArrayList(); ArrayList<String> arrayList1=new ArrayList(); arrayList1.add("h"); arryList.add("a"); arryList.add("b"); arryList.add("c"); arryList.add("d"); System.out.println(arryList.set(1, "E"));//替换指定位值的元素
判断:
- i sEmpty()
- contains(Object o)
- indexOf(Object o)
ArrayList<String> arryList =new ArrayList(); ArrayList<String> arrayList1=new ArrayList(); arrayList1.add("h"); arryList.add("a"); arryList.add("b"); arryList.add("c"); arryList.add("d"); System.out.println(arrayList.isEmpty());//判断集合是否为空集 System.out.println(arrayList.contains("b"));//判断是否包含指定的元素System.out.println(arrayList.indexOf("a"));//判断集合中对应元素的索引
查询:
- get(int index)
- size()
ArrayList<String> arryList =new ArrayList(); ArrayList<String> arrayList1=new ArrayList(); arrayList1.add("h"); arryList.add("a"); arryList.add("b"); arryList.add("c"); arryList.add("d"); System.out.println(arryList.size());//返回的是实际添加的元素的长度System.out.println(arryList.get(3)); //获取指定位值的元素
转换:
toArray(T[] a)
System.out.println(arryList); ArrayList<String> arrayList2 =new ArrayList<>(); arrayList2.add("h"); arrayList2.add("a"); arrayList2.add("b"); arrayList2.add("c"); arrayList2.add("d"); //集合转数组 String [] string = arrayList2.toArray(new String[arrayList.size()]); System.out.println(Arrays.toString(string));
List接口集合迭代
建立一个集合
ArrayList<String> arrayList2 =new ArrayList<>(); arrayList2.add("h"); arrayList2.add("a"); arrayList2.add("b"); arrayList2.add("c"); arrayList2.add("d");
● for循环遍历
for (int i = 0; i < arrayList2.size(); i++) {System.out.println(arrayList2.get(i));}
● 增强for循环的遍历
for (String t :arrayList2){System.out.println(t); }
● 迭代器遍历(Iterator)
使用集合中提供的迭代器 专门用来遍历集合数据
Iterator<String> iterator = arrayList2.iterator(); while (iterator.hasNext()){ String item = iterator.next();System.out.println(item); } //区别:iterator:只能从头开始遍历ListIteror:可以从头或从尾开始遍历 ListIterator<String> listIterator = arrayList2.listIterator(arrayList.size()); while (listIterator.hasNext()){ //从头开始遍历String item1 =listIterator.next();System.out.println(item1);} while (listIterator.hasPrevious()){ //从尾开始遍历String item2 =listIterator.previous();System.out.println(item2); }
LinkedList的常用方法
增加
- add(E e)
- add(int index,Eelement)
- set(int index, E element)
- addFirst(Eelement)
- addLast(Eelement)
LinkedList<String>list = new LinkedList<>(); list.add("adc"); list.add("ssa"); list.add("qwe"); list.add(0, "add");//向指定位置添加元素 list.addFirst("name");//向头加元素 list.addLast("success");//向尾添加元素 System.out.println(list); System.out.println(list.get(3));//只能从头或从尾开始查找,直到找到对应位置的元素 list.set(2, "40");//在索引为2当前位置添加“40”
判断
- contains(Object o)
- i sEmpty()
查询
- get(int index)
- getLast()
LinkedList<Integer> linkedList= new LinkedList<>(); linkedList.add(1); linkedList.add(2); linkedList.add(3); linkedList.add(4); linkedList.add(5); linkedList.add(6); System.out.println(linkedList.getFirst());
删除
- removeLast()
- remove(int index)
LinkedList<String>list = new LinkedList<>(); list.add("adc");list.add("ssa"); list.add("qwe"); //删除 System.out.println(list.remove(2)); System.out.println(list.removeFirst()); System.out.println(list.removeLast());