Java集合框架(list,Queue)

时间:2023-03-10 00:48:35
Java集合框架(list,Queue)

Java集合框架(list,Queue)

List和Queue都继承自Collection接口

list常规用法

Java集合框架(list,Queue)

List判断两个对象相等的标准:equals方法返回true

class A2
{
    public boolean equals(Object obj)
    {
        return true;
    }
}
public class ListTest2
{
    public static void main(String[] args)
    {
        List books = new ArrayList();
        books.add(new String("一"));
        books.add(new String("二"));
        books.add(new String("三"));
        System.out.println(books); //[一, 二, 三]
        //调用A2对象的equals方法,只要equals方法返回true就视为相等,所以去掉了第一个元素
        books.remove(new A2());
        System.out.println(books);//[二, 三]
        books.remove(new A2());
        System.out.println(books);//[三]
    }
}

ListIterator()方法

Java集合框架(list,Queue)

public class ListIteratorTest
{
    public static void main(String[] args)
    {
        List bookList = new ArrayList();
        bookList.add("111111");
        bookList.add("222222");
        ListIterator lit = bookList.listIterator();
        while (lit.hasNext())
        {
            System.out.println(lit.next());
        }
        System.out.println("=======下面开始反向迭代=======");
        while(lit.hasPrevious())
        {
            System.out.println(lit.previous());
        }
    }
}

Java集合框架(list,Queue)

Queue集合

Java集合框架(list,Queue)

PriorityQueue实现类

public class PriorityQueueTest
{
    public static void main(String[] args)
    {
        PriorityQueue pq = new PriorityQueue();
        //下面代码依次向pq中加入四个元素
        pq.offer(6);
        pq.offer(-3);
        pq.offer(9);
        pq.offer(0);
        //输出pq队列,并不是按元素的加入顺序排列,
        //而是按元素的大小顺序排列,输出[-3, 0, 9, 6]
        System.out.println(pq);
        //访问队列第一个元素,其实就是队列中最小的元素:-3
        System.out.println(pq.poll());
    }
}

此优先队列不允许插入null值,有两种排序方式,与TreeSet类似

Java集合框架(list,Queue)

Deque与ArrayDeque

Java集合框架(list,Queue)

ArrayDeque作为栈来使用

public class ArrayDequeTest
{
    public static void main(String[] args)
    {
        ArrayDeque stack = new ArrayDeque();
        //依次将三个元素push入"栈"
        stack.push("java");
        stack.push("C++");
        stack.push("C#");
        System.out.println(stack);//[C#, C++, java]
        System.out.println(stack.peek());//C#
        System.out.println(stack);//[C#, C++, java]
        System.out.println(stack.pop());//C#
        System.out.println(stack);//[C++, java]
    }
}

作为队列来使用

public static void main(String[] args)
    {
        ArrayDeque queue = new ArrayDeque();
        //依次将三个元素push入"栈"
        queue.offer("java");
        queue.offer("C++");
        queue.offer("C#");
        System.out.println(queue);//[java, C++, C#]
        System.out.println(queue.peek());//java
        System.out.println(queue);//[java, C++, C#]
        System.out.println(queue.poll());//java
        System.out.println(queue);//[C++, C#]
    }

LinkedList实现了Deque接口,因此可以实现栈,队列的功能,不再举例