简单的了解一下Java集合

import java.util.*;

public class Collections {

    public static void main(String[] args) {
        ArrayListExample.main(args);
        LinkedListExample.main(args);
        VectorExample.main(args);
        StackExample.main(args);
        HashSetExample.main(args);
        TreeSetExample.main(args);
        PriorityQueueExample.main(args);
        DequeExample.main(args);
    }

    class ArrayListExample {

        /**
         * ArrayList
         * 它是一个动态数组,这意味着它的大小可以根据需要减少或增加,因此,它提供了灵活性。
         * 你可以使用其索引号,随机访问数组列表中的元素。
         *
         * @param args
         */
        public static void main(String[] args) {

            ArrayList<String> list = new ArrayList<>();
            list.add("我草");
            list.add("奇怪");
            list.add("离谱");
            //打印列表中所有的元素
            System.out.println(list);

            //通过索引获取list列表中的第一个元素
            System.out.println(list.get(0));

            //根据元素索引号删除元素
            list.remove(0);
            System.out.println(list);

            //返回false,因为该元素在列表中不存在
            System.out.println(list.remove("我草"));
            //清空列表中所有的元素
            list.clear();
        }

    }


    class LinkedListExample {
        /**
         * 链表
         * 它使用链表数据结构来存储信息,它还可以存储重复的信息
         *
         * @param args
         */
        public static void main(String[] args) {
            LinkedList<Integer> list = new LinkedList<>();
            list.add(1);
            list.add(-2);
            list.add(100);
            list.add(0);
            list.add(50);

            //打印所有元素
            System.out.println(list);

            list.remove(2);
            System.out.println("list = " + list);
        }
    }

    class VectorExample {
        /**
         * Vector
         * 它类似ArrayList,将元素存储在动态数组中。ArrayList与Vector之间的两个
         * 主要区别是 Vector是同步,并且有许多Collections框架中不包含的方法
         *
         * @param args
         */
        public static void main(String[] args) {
            Vector<Float> vector = new Vector<>();
            vector.add(5.4f);
            vector.add(-4.5f);
            vector.add(9.55f);
            //在数组列表使用addElement添加元素
            vector.addElement(6.5f);
            vector.addElement(15.76f);

            System.out.println("vector = " + vector);

            vector.remove(5.4f);
            System.out.println("vector = " + vector);

        }

    }

    class StackExample {
        /**
         * Stack 堆
         * 它实现了基于后进先出的(LIFO)概念的堆栈数据结构,它是Vector的子类
         */
        public static void main(String[] args) {
            Stack<String> stack = new Stack<>();
            stack.push("JAVA");
            stack.push("PHP");
            stack.push("C++");

            System.out.println("stack = " + stack);

            //从堆栈中移除元素
            stack.pop();
            System.out.println("stack = " + stack);
        }
    }

    class HashSetExample {
        /**
         * Set Interface
         * 它是唯一元素的集合,即不存储重复元素。插入顺序不保留。
         * 实现Set 接口的类是 HashSet,LinkedHashSet和TreeSet
         * <p>
         * HashSet
         * 它使用哈希表通过哈希技术存储元素,它实现Set接口
         */
        public static void main(String[] args) {
            HashSet<Integer> hashSet = new HashSet<>();
            hashSet.add(5);
            hashSet.add(16);
            hashSet.add(8);
            hashSet.add(-3);
            hashSet.add(16);

            System.out.println("hashSet = " + hashSet);

            //删除元素
            hashSet.remove(-3);
            System.out.println("hashSet = " + hashSet);
        }
    }

    class TreeSetExample {

        /**
         * TreeSet
         * 它使用 红黑树来存储元素并实现Set接口,
         * 元素以升序存储在TreeSet中,Java  TreeSet类的访问和检索时间非常快
         */
        public static void main(String[] args) {
            TreeSet<String> treeSet = new TreeSet<>();
            treeSet.add("Html");
            treeSet.add("php");
            treeSet.add("python");
            //再一次添加
            treeSet.add("Html");

            System.out.println("treeSet = " + treeSet);

            treeSet.remove("php");
            System.out.println("treeSet = " + treeSet);
        }
    }

    class PriorityQueueExample {
        /**
         * Queue Interface
         * 它实现了队列数据接口,该结构基于FIFO(先进先出)的概念,这意味着首先插入的元素将先被删除。
         * PriorityQueue Deque和ArrayQueue是实现Queue接口的类
         * <p>
         * PriorityQueue
         * 每个元素都被赋予了一些优先级,并根据该优先级处理元素
         */
        public static void main(String[] args) {
            PriorityQueue<String> queue = new PriorityQueue<>();
            queue.add("html");
            queue.add("css");
            queue.add("javascript");
            queue.add("php");
            queue.add("python");

            System.out.println("queue = " + queue);

            System.out.println("head : " + queue.element());
            System.out.println("head : " + queue.peek());
            
            queue.remove();
            queue.poll();
            System.out.println("queue = " + queue);
        }
    }
    
    class DequeExample{
        /**
         * Deque Interface
         * 双端队列称为 Deque,它允许从两端执行插入和删除。实现Deque接口的是ArrayDeque
         */
        public static void main(String[] args) {
            ArrayDeque<Integer> deque = new ArrayDeque<>();
            deque.add(1);
            deque.add(-4);
            deque.add(5);
            System.out.println("deque = " + deque);
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值