目录
一、List集合概述
二、ArrayList类
三、ArrayList常用方法实例
四、LinkedList类
五、Linkedist常用方法实例
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
执行结果:集合元素包括:[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_保函]