Java-Collection家族(List接口)

集合-Collection家族-List接口

List接口

1 特点

​ 有序且可重复(因为List接口中添加了许多针对下标操作的方法)

2 四种实现类的数据类型与特点

​ a. ArrayList
​ 数据结构:一维数组
​ 特点:存储数据

​ b. LinkedList
​ 数据结构:双向列表
​ 特点:队列模式、栈模式

​ c. Vector
​ 数据结构:一维数组
​ 特点:线程安全

​ d. Stack
​ 继承关系:class Stack extends Vector
​ 特点:栈模式

3 ArrayList(实现类)
3.1 ArrayList的使用
package com.qf.arraylist_class;

import java.sql.Array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;

public class Test01 {
	/**
	 * 知识点:ArrayList的使用
	 */
	public static void main(String[] args) {
		
		ArrayList<String> list = new ArrayList<>();
		
		//添加数据
		list.add("小希");
		list.add("小空");
		list.add("小丽");
		list.add("小光");
		list.add("小步");
		
		//设置指定下标上的元素
		list.set(1, "小康");
		
		//获取指定下标上的元素
		String str = list.get(1);
		System.out.println("获取指定下标上的元素:" + str);//侯小康
		
		//获取元素个数
		int size = list.size();
		System.out.println("获取元素个数:" + size);//5
		
		//在指定下标上添加元素
		list.add(2, "小飞");
		
		ArrayList<String> newList1 = new ArrayList<>();
		Collections.addAll(newList1, "aaa","bbb","ccc","ccc");//利用集合工具类(Collections)批量添加元素
		list.addAll(newList1);//将newList1中所有的元素都添加到list集合里末尾的位置
		
		ArrayList<String> newList2 = new ArrayList<>();
		Collections.addAll(newList2, "xxx","xxx","yyy","yyy","zzz","zzz");//利用集合工具类(Collections)批量添加元素
		list.addAll(3, newList2);//将newList2中所有的元素都添加到list集合里指定下标的位置
		
		//清空集合里所有的元素
		//list.clear();
		
		System.out.println("判断集合中是否包含指定元素:" + list.contains("小康"));//true
		System.out.println("判断集合中是否包含指定集合:" + list.containsAll(newList1));//true
		
		System.out.println("获取元素在集合中第一次出现的下标:" + list.indexOf("ccc"));//12
		System.out.println("获取元素在集合中最后一次出现的下标:" + list.lastIndexOf("ccc"));//13
		
		//没有-true,有-false
		System.out.println("判断集合里是否没有元素:" + list.isEmpty());//false
		
		list.remove(9);//通过下标删除元素
		list.remove("小丽");//通过数据删除元素
		list.removeAll(newList1);//将list中有newList1的元素全部删除(去除交集)
		
		list.retainAll(newList2);//将list中有newList2的元素全部保留(保留交集)
		
		List<String> subList = list.subList(1, 4);//从开始下标处(包含)截取到结束下标处(排他)的元素,返回新的集合
	
		//将集合转换为数组
		Object[] array1 = subList.toArray();
		System.out.println(Arrays.toString(array1));//[xxx, yyy, yyy]
		
		//将集合转换为指定类型的数组
		String[] array2 = new String[3];
		subList.toArray(array2);
		System.out.println(Arrays.toString(array2));//[xxx, yyy, yyy]
		
		System.out.println("-----------------------------------------");
		
		//遍历集合 -- for循环
		for (int i = 0; i < list.size(); i++) {
			System.out.println(list.get(i));
		}
		
		System.out.println("-----------------------------------------");
		
		//遍历集合 -- foreach
		for (String element : list) {
			System.out.println(element);
		}
		
		System.out.println("-----------------------------------------");
		
		//遍历集合 -- Iterator
		Iterator<String> it = list.iterator();
		while(it.hasNext()){//判断是否有可迭代的元素
			String next = it.next();//获取下一个元素
			System.out.println(next);
		}
		
		System.out.println("-----------------------------------------");
		
		//遍历集合 -- ListIterator
		ListIterator<String> listIterator = list.listIterator();
		while(listIterator.hasNext()){//判断是否有可迭代的元素
			String next = listIterator.next();//获取下一个元素
			System.out.println(next);
		}
		
		
	}
}

4 LinkedList(实现类)
4.1 LinkedList的使用(同ArrayList-略)
4.2 LinkedList独有的方法
package com.qf.linkedlist_class;

import java.util.LinkedList;

public class Test02 {
	/**
	 * 知识点:LinkedList独有的方法
	 */
	public static void main(String[] args) {
		
		LinkedList<String> list = new LinkedList<>();
		
		list.add("小希1");
		list.add("小希2");
		list.add("小希3");
		list.add("abc");
		list.add("abc");
		list.add("AAA");
		list.add("abc");
		list.add("abc");
		
		//添加到头部
		list.addFirst("aaa");
		list.offerFirst("bbb");
		list.push("ccc");
		
		//添加到末尾
		list.addLast("xxx");
		list.offer("yyy");
		list.offerLast("zzz");
		
		System.out.println("获取第一个元素:" + list.element());
		System.out.println("获取第一个元素:" + list.getFirst());
		System.out.println("获取第一个元素:" + list.peek());
		System.out.println("获取第一个元素:" + list.peekFirst());
		System.out.println("获取第一个元素:" + list.pop());
		
		System.out.println("获取最后一个元素:" + list.getLast());
		System.out.println("获取最后一个元素:" + list.peekLast());
		
		//删除第一个元素
		list.poll();
		list.pollFirst();
		list.removeFirst();
		
		//删除最后一个元素
		list.pollLast();
		list.removeLast();
		
		//删除第一次出现的元素
		list.removeFirstOccurrence("abc");
		
		//删除最后一次出现的元素
		list.removeLastOccurrence("abc");
		
		//倒序遍历
//		Iterator<String> descendingIterator = list.descendingIterator();
//		while(descendingIterator.hasNext()){
//			String next = descendingIterator.next();
//			System.out.println(next);
//		}
		
		for (String element : list) {
			System.out.println(element);
		}
		
	}
}
4.3 LinkedList实现队列模式
package com.qf.linkedlist_class;

import java.util.LinkedList;

public class Test03 {
	/**
	 * 知识点:LinkedList实现队列模式
	 * 
	 * 注意:队列模式 - 先进先出
	 */
	public static void main(String[] args) {
		
		LinkedList<String> list = new LinkedList<>();
		
		list.add("aaa");
		list.add("bbb");
		list.add("ccc");
		list.add("ddd");
		list.add("eee");
		
		while(!list.isEmpty()){
			//String element = list.pollFirst();
			String element = list.removeFirst();
			System.out.println(element);
		}
		
		System.out.println("集合的元素个数为:" + list.size());//0
	}
}

4.4 LinkedList实现栈模式
package com.qf.linkedlist_class;

import java.util.LinkedList;

public class Test04 {
	/**
	 * 知识点:LinkedList实现栈模式
	 * 
	 * 注意:栈模式 - 先进后出/后进先出
	 */
	public static void main(String[] args) {
		
		LinkedList<String> list = new LinkedList<>();
		
		list.add("aaa");
		list.add("bbb");
		list.add("ccc");
		list.add("ddd");
		list.add("eee");
		
		while(!list.isEmpty()){
			String element = list.removeLast();
			System.out.println(element);
		}
		
		System.out.println("集合的元素个数为:" + list.size());//0
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值