目录
java.util.List接口继承自Collection接口,是单列集合的一个分支,通常将实现了List接口的对象称为List集合,在List集合中允许出现重复的元素,所有的元素是以一种线性方式进行存储的,在程序中可以通过元素的索引下标来访问集合中的指定元素,另外List集合还有一个特点就是元素有序,即元素的存入顺序和取出顺序一致
List接口常用方法列表说明详见 java集合之Collection接口体系-CSDN博客
java.util.ArrayList是一个实现了List接口的单列集合实现类,底层是一个大小可变的数组的实现
java.util.ArrayList集合数据存储的结构本质是一个可变数组对象,其特点包括:
1.查找快:日常开发中使用最多的功能为查询数据、遍历数据,所以ArrayList是常用的集合。
2.元素增删操作慢,一旦在某个位置增加、修改和删除数据,后面所有数据都必须往后移动
1.向集合中添加单个元素
- /**
- * 在集合中添加单个元素
- * @return 返回集合列表
- */
- private List
add(){ - List
list = new ArrayList(); - list.add("01_贷款");
- list.add("02_贴现");
- list.add("03_承兑");
- list.add("04_保函");
- list.add("05_信用证");
- return list;
- }
2.在集合的指定索引下标处添加单个元素
- /**
- * 在集合的指定下标处添加单个元素
- * @param list 集合对象
- * @param index 索引位置
- * @param obj 需要添加的元素对象
- * @return 变更后的集合对象
- */
- private List
addForIndex(int index,List list,String obj) { - list.add(index,obj);
- return list;
- }
3.在集合的尾部添加子集合
- /**
- * 在集合的尾部添加子集合
- * @param list 集合对象
- * @return 返回合并后的集合对象
- */
- private List
addSubListDemo(List list) { - //定义一个子集合列表
- List
subList = new ArrayList<>(); - subList.add("06_委托贷款");
- subList.add("07_垫款");
- subList.add("08_贷款承诺");
- subList.add("09_担保");
- //将定义的子集合添加到已知集合的末尾
- list.addAll(subList);
- return list;
- }
4.在集合的指定索引下标位置添加子集合
- /**
- * 在集合的指定索引位置添加子集合列表
- * @param list 集合对象
- * @param index 索引位置
- * @return 返回合并后的集合对象
- */
- private List
addSubListForIndexDemo(List list,int index) { - //定义一个子集合列表
- List
subList = new ArrayList<>(); - subList.add("06_委托贷款");
- subList.add("07_垫款");
- subList.add("08_贷款承诺");
- subList.add("09_担保");
- //将定义的子集合添加到已知集合的指定索引位置
- list.addAll(index,subList);
- return subList;
- }
5.获取集合的元素数量
- /**
- * 获取集合元素的数量大小
- * @param list 集合对象
- * @return 返回集合中元素的数量
- */
- private Integer getListSize(List
list) { - return list.size();
- }
6.获取集合中指定元素对象的索引下标
- /**
- * 获取集合中指定元素对象的索引位置
- * @param list 集合对象
- * @param obj 元素对象
- * @return 返回元素的索引位置
- */
- private Integer getIndexForElement(List
list,String obj) { - return list.indexOf(obj);
- }
7.获取集合中指定元素最后一次的索引位置
- /**
- * 获取集合中指定元素最后一次的索引位置
- * @param list 集合对象
- * @param obj 元素对象
- * @return 返回最后一次出现的索引位置
- */
- private Integer getIndexForLastElement(List
list,String obj) { - return list.lastIndexOf(obj);
- }
8.将指定元素对象从集合中移除
- /**
- * 将指定元素对象从集合中移除
- * @param list 集合对象
- * @param obj 需要移除的元素
- * @return 是否移除成功
- */
- private boolean removeListElement(List
list,String obj) { - return list.remove(obj);
- }
9.将集合中指定索引下标位置的元素替换为新的元素对象
- /**
- * 将集合中指定索引位置的元素替换为新的元素对象
- * @param list 集合对象
- * @param index 指定的索引位置
- * @param obj 替换的新元素
- * @return 返回被替换的元素
- */
- private String getSetElementForIndex(List
list,Integer index,String obj) { - return list.set(index,obj);
- }
10.将集合中的元素根据指定索引范围截取一个新的集合返回
- /**
- * 从已知集合中根据指定索引范围截取一个新的集合返回
- * @param list 集合对象
- * @param startIndex 起始索引
- * @param endIndex 结束索引
- * @return 返回获取的子集合
- */
- private List
getSetElementForIndex(List list,Integer startIndex,Integer endIndex) { - return list.subList(startIndex, endIndex);
- }
11.集合中的元素转换为一个对象数组返回
- /**
- * 从已知集合中转换为一个对象数组返回
- * @param list 集合对象
- * @return 返回集合的数组对象
- */
- private Object[] getToArrayForList(List
list){ - return list.toArray();
- }
java.util.LinkedList是一个实现了List接口的单列集合实现类,底层是一个双向链表,同时实现了实现了List和Deque接口
其特点包括
2. 缺点:
1.将指定元素添加到集合的头部,方法包括2个
- import java.util.LinkedList;
-
- public class LinkedListDemo {
-
- public static void main(String[] args) {
-
- LinkedList linkedList = new LinkedList
(); - LinkedListDemo listDemo = new LinkedListDemo();
- linkedList = listDemo.addLinkedList();
- System.out.println("初始集合元素包括:"+linkedList);
- linkedList.addFirst("05_信用证");
- linkedList.offerFirst("06_电票");
- System.out.println("头部添加后的集合元素包括:"+linkedList);
-
- }
-
- private LinkedList addLinkedList(){
- LinkedList linkedList = new LinkedList
(); - linkedList.add("01_贷款");
- linkedList.add("02_贴现");
- linkedList.add("03_承兑");
- linkedList.add("04_保函");
- return linkedList;
-
- }
- }
- 执行结果:
- 初始集合元素包括:[01_贷款, 02_贴现, 03_承兑, 04_保函]
- 头部添加后的集合元素包括:[06_电票, 05_信用证, 01_贷款, 02_贴现, 03_承兑, 04_保函]
2.将指定的元素添加到集合的尾部,方法包括4个
- import java.util.LinkedList;
- public class LinkedListDemo {
- public static void main(String[] args) {
- LinkedList linkedList = new LinkedList
(); - LinkedListDemo listDemo = new LinkedListDemo();
- listDemo.addElement(linkedList,"01_贷款");
- listDemo.addElementForOffer(linkedList,"02_贴现");
- listDemo.addElementForOfferLast(linkedList,"03_承兑");
- listDemo.addElementForAddLast(linkedList,"04_保函");
- System.out.println("集合元素包括:"+linkedList);
- }
-
- private boolean addElement(LinkedList{
- return linkedList.add(obj);
- }
-
- private boolean addElementForOffer(LinkedList{
- return linkedList.add(obj);
- }
-
- private boolean addElementForOfferLast(LinkedList{
- return linkedList.offerLast(obj);
- }
-
- private void addElementForAddLast(LinkedList{
- linkedList.addLast(obj);
- }
- }
-
-
执行结果:集合元素包括:[01_贷款, 02_贴现, 03_承兑, 04_保函]
3.获取集合的头元素方法包括4个
- //若不做空判断将会抛NoSuchElementException
- private String getElementForElement(LinkedList
linkedList) { - String element = linkedList==null||linkedList.size()==0?"":linkedList.element();
- return element;
- }
- //若不做空判断将会抛NoSuchElementException
- private String getElementForFirst(LinkedList
linkedList) { - String element = linkedList==null||linkedList.size()==0?"":linkedList.getFirst();
- return element;
- }
- //若不做空判断将返回null
- private String getElementForPeek(LinkedList
linkedList) { - String element = linkedList.peek();
- return element;
- }
- //若不做空判断将返回null
- private String getElementForPeekFirst(LinkedList
linkedList) { - String element = linkedList.peekFirst();
- return element;
- }
4.检索集合中的元素可分为两类即
- public class LinkedListDemo {
-
- public static void main(String[] args) {
-
- LinkedListDemo listDemo = new LinkedListDemo();
- LinkedList linkedList = listDemo.addLinkedList();
- System.out.println("集合元素列表:"+linkedList +
- "\n根据索引获取指定元素:"+listDemo.getElementForGet(linkedList,2) +
- "\n获取集合头元素:"+listDemo.getElementForFirst(linkedList)+
- "\n获取集合尾元素:"+listDemo.getElementForLast(linkedList) );
-
- }
-
- private LinkedList addLinkedList(){
- LinkedList linkedList = new LinkedList
(); - linkedList.add("01_贷款");
- linkedList.add("02_贴现");
- linkedList.add("03_承兑");
- linkedList.add("04_保函");
- return linkedList;
-
- }
-
-
- public String getElementForGet(LinkedList
linkedList,Integer index) { - return linkedList!=null&&linkedList.size()>0?linkedList.get(index):"";
- }
-
-
- public String getElementForFirst(LinkedList
linkedList) { - return linkedList!=null&&linkedList.size()>0?linkedList.getFirst():"";
- }
-
-
- public String getElementForLast(LinkedList
linkedList) { - return linkedList!=null&&linkedList.size()>0?linkedList.getLast():"";
- }
- }
- 执行结果:
- 集合元素列表:[01_贷款, 02_贴现, 03_承兑, 04_保函]
- 根据索引获取指定元素:03_承兑
- 获取集合头元素:01_贷款
- 获取集合尾元素:04_保函
其中poll*() : 使用该类方法删除集合中的元素同时返回被删除的元素对象,若集合不存在元素对象时,则返回null,不会抛出异常
- public class LinkedListDemo {
-
- public static void main(String[] args) {
- LinkedListDemo listDemo = new LinkedListDemo();
- LinkedList linkedList = listDemo.addLinkedList();
-
- System.out.println("原始集合元素列表:"+linkedList +
- "\nPoll方法获取集合头元素:"+listDemo.getElementForPoll(linkedList) +
- "\nPollFirst获取集合头元素:"+listDemo.getElementForPollFirst(linkedList)+
- "\nPollLast获取集合尾元素:"+listDemo.getElementForPollLast(linkedList) +"" +
- "\n检索集合元素后集合中的元素列表:"+ linkedList);
-
- }
-
- private LinkedList addLinkedList(){
- LinkedList linkedList = new LinkedList
(); - linkedList.add("01_贷款");
- linkedList.add("02_贴现");
- linkedList.add("03_承兑");
- linkedList.add("04_保函");
- linkedList.add("05_电票");
- return linkedList;
-
- }
-
- public String getElementForPoll(LinkedList
linkedList) { - return linkedList.poll();
- }
- public String getElementForPollFirst(LinkedList
linkedList) { - return linkedList.pollFirst();
- }
- public String getElementForPollLast(LinkedList
linkedList) { - return linkedList.pollLast();
- }
- }
- 执行结果:
- 原始集合元素列表:[01_贷款, 02_贴现, 03_承兑, 04_保函, 05_电票]
- Poll方法获取集合头元素:01_贷款
- PollFirst获取集合头元素:02_贴现
- PollLast获取集合尾元素:05_电票
- 检索集合元素后集合中的元素列表:[03_承兑, 04_保函]
其中remove*() : 使用该类方法删除集合中的元素同时返回被删除的元素对象(其中remove(Object obj)方法返回是否删除成功的boolean值,成功返回true,否则返回false),若集合为空时则抛出空指针异常,若集合不存在元素对象时, 抛出被请求的元素不存在异常
- public class LinkedListDemo {
-
- public static void main(String[] args) {
-
-
- LinkedListDemo listDemo = new LinkedListDemo();
- LinkedList linkedList = listDemo.addLinkedList();
-
- System.out.println("原始集合元素列表:"+linkedList +
- "\nremove方法删除集合头元素:"+listDemo.removeElementForRemove(linkedList,2) +
- "\nremove方法删除集合指定元素:"+listDemo.removeElementForRemoveObj(linkedList,"05_电票") +
- "\nremoveFirst方法删除集合头元素:"+listDemo.removeElementForRemoveFirst(linkedList) +
- "\nremoveLast方法删除集合尾元素:"+listDemo.removeElementForRemoveLast(linkedList) +
- "\n删除集合元素后集合中的元素列表:"+ linkedList);
-
- }
-
- private LinkedList addLinkedList(){
- LinkedList linkedList = new LinkedList
(); - linkedList.add("01_贷款");
- linkedList.add("02_贴现");
- linkedList.add("03_承兑");
- linkedList.add("04_保函");
- linkedList.add("05_电票");
- linkedList.add("06_垫款");
- return linkedList;
-
- }
-
-
- public String removeElementForRemove(LinkedList
linkedList,int index) { - return linkedList!=null&&linkedList.size()>0? linkedList.remove(index):"";
- }
-
- public boolean removeElementForRemoveObj(LinkedList
linkedList,Object obj) { - return linkedList!=null&&linkedList.size()>0?linkedList.remove(obj):false;
- }
-
- public String removeElementForRemoveFirst(LinkedList
linkedList) { - return linkedList!=null&&linkedList.size()>0?linkedList.removeFirst():"";
- }
- public String removeElementForRemoveLast(LinkedList
linkedList) { - return linkedList!=null&&linkedList.size()>0?linkedList.removeLast():"";
- }
-
- }
- 执行结果:
- 原始集合元素列表:[01_贷款, 02_贴现, 03_承兑, 04_保函, 05_电票, 06_垫款]
- remove方法删除集合头元素:03_承兑
- remove方法删除集合指定元素:true
- removeFirst方法删除集合头元素:01_贷款
- removeLast方法删除集合尾元素:06_垫款
- 删除集合元素后集合中的元素列表:[02_贴现, 04_保函]