2023年6月10日,LinkedList,Vector,Stark,HashSet_Vector

1. List

1. LinkedList

LinkedList的使用

package com.wz.linkedlist_class;

import java.util.LinkedList;

public class test01 {
    public static void main(String[] args) {
        LinkedList<String> list = new LinkedList<>();
        list.add("AAA");
        list.add("BBB");
        list.add("CCC");
        list.add("DDD");
        for (String element:list
             ) {
            System.out.println(element);
        }
    }
}

LinkedList的队列模式,先进先出

package com.wz.linkedlist_class;

import java.util.LinkedList;

public class test02 {
    /**
     * LinkedList的队列模式.先进先出
     * @param args
     */
    public static void main(String[] args) {
        LinkedList<String> list = new LinkedList<>();
        list.add("AAA");
        list.add("BBB");
        list.add("CCC");
        list.add("DDD");
        //判断队列是否为空
        while(!list.isEmpty()){
            //删除队列第一个元素
            String element = list.removeFirst();
            System.out.println(element);
        }
    }
}

LinkedList的栈模式,先进后出

package com.wz.linkedlist_class;

import java.util.LinkedList;

public class test03 {
    /**
     * LinkedList的栈模式.先进后出
     * @param args
     */
    public static void main(String[] args) {
        LinkedList<String> list = new LinkedList<>();
        list.add("AAA");
        list.add("BBB");
        list.add("CCC");
        list.add("DDD");
        //判断队列是否为空
        while(!list.isEmpty()){
            //删除最后一个元素
            String element = list.removeLast();
            System.out.println(element);
        }
    }
}

LinkedList的其他方法

list.addFirst();//添加到第一个位置
list.addLast()//添加到最后一个位置
list.offerFirst();//添加到第一个位置
list.offerLast();//添加到最后一个位置
list.offer("");//添加到最后一个位置
list.element();//获取第一个元素
list.getFirst();//获取第一个元素
list.getLast();//获取最后一个元素
list.peek();//获取第一个元素
list.peekFirst();//获取第一个元素
list.peekLast();//获取最后一个元素
list.pool();//删除第一个元素
list.PoolFirst();//删除第一个元素
list.removeFirst();//删除第一个元素
list.poolLast();//删除最后一个元素
list.removeLast();//删除最后一个元素
list.removeFirstOccurrence("XXX");//删除第一次出现的元素;
list.removeLastOccurrence("XXX");//删除最后一次出现的元素;

2. Vector

Vector的使用

/**
	 * 知识点:了解Vector的历史
	 * 	Vector是元老级别的类,在JDK1.0开始就实现。JDK1.2开始才有的集合框架的概念,
	 * 	当时绝大部分程序员已经习惯使用Vector,为了更好的推广集合的概念,也出于保留Vector
	 * 	的思想,Java的设计者让Vector多实现了List接口,才将其保留下来
	 * 
	 * 需求:使用Vector老的方法
	 * 经验:
	 * 		1.命名喜欢使用Element
	 * 		2.现在很少人使用Vector集合
	 * 		3.面试官喜欢问Vector的底层原理
	 */
public static void main(String[] args) {
		
		Vector<String> v = new Vector<>();
		
		//添加元素
		v.addElement("aaa");
		v.addElement("bbb");
		v.addElement("ccc");
		v.addElement("ddd");
		v.addElement("eee");
		v.addElement("fff");
		v.addElement("ggg");
		
		v.removeElementAt(0);//根据下标删除元素
		v.removeElement("bbb");//根据元素删除元素
		
		//遍历元素
		Enumeration<String> elements = v.elements();
		while(elements.hasMoreElements()){//判断是否有可迭代的元素
			String nextElement = elements.nextElement();//返回下一个元素
			System.out.println(nextElement);
		}
	}

3. Stark

Stark的栈模式,先进后出

class Stack extends Vector

Vector类能调用的方法,Stack也有

public static void main(String[] args) {
		
		Stack<String> stack = new Stack<>();
		
		//将元素添加到栈顶
		stack.push("aaa");
		stack.push("bbb");
		stack.push("ccc");
		stack.push("ddd");
		
		//获取栈顶元素
		String peek = stack.peek();
		System.out.println("获取栈顶元素:" + peek);//ddd
		
		//获取元素距离栈顶的个数(从1开始)
		int search = stack.search("bbb");
		System.out.println("获取元素距离栈顶的个数:" + search);
		
		//判断集合是否不为空
		while(!stack.empty()){
			//删除栈顶元素并返回
			String pop = stack.pop();
			System.out.println(pop);
		}
		
		System.out.println("元素个数为:" + stack.size());//0
	}

2023年6月10日,LinkedList,Vector,Stark,HashSet_Stack_02

1. Set

1. HashSet

/**
	 * 知识点:理解HashSet的特点
	 * 特点:无序+去重
	 * 
	 * 理解无序:存入顺序和取出顺序不一致,无序不代表随机
	 * 
	 * 存入顺序的逻辑:
	 * 		1.获取元素的hash值 -- hashCode()
	 * 		2.利用hash值计算出在数组中的下标
	 * 		3.判断下标上是否有元素
	 * 			3.1 没有 - 就直接添加
	 * 			3.2  有 - 判断元素之间是否相同 -- ((hash) && (== || equals))
	 * 				3.2.1 相同 -- 不存,达到去重的效果
	 * 				3.2.2 不同 -- 添加元素,JDK1.7头插法、JDK1.8尾插法
	 * 
	 * 取出顺序的逻辑:
	 * 		遍历数组
	 */
package com.wz.HashSet_class;

import java.util.HashSet;

public class test02 {
    public static void main(String[] args) {
        HashSet<String> set = new HashSet<>();
        set.add("AAA");
        set.add("BBB");
        set.add("CCC");
        set.add("DDD");
        set.add("AAA");
        set.add("aaa");
        for (String element:set
             ) {
            System.out.println(element);
        }

    }
}

2023年6月10日,LinkedList,Vector,Stark,HashSet_LinkedList_03

2. LinkedHashSet

class LinkedHashSet extends HashSet

存入顺序的逻辑 - 和HashSet是一样的

取出顺序的逻辑:从双向链表的头部开始遍历