JAVASE之Queue、Deque、Map

来源:互联网 发布:怎么删除淘宝评论记录 编辑:程序博客网 时间:2024/05/18 09:38

队列 Queue

先进先出

这里写图片描述

选择LinkedList实现Queue的原因在于Queue经常要添加和删除的操作,正好LinkList在这方面的效率高

队列的入队,出队,查看队首,遍历队列:

public static void main(String[] args) {        Queue<String> queue = new LinkedList<String>();        /*         * boolean offer(T t)         * 入队方法         * 将给定元素添加到队列末尾。添加成功返回true         */        queue.offer("a");        queue.offer("b");        queue.offer("c");        queue.offer("d");        System.out.println(queue);        /*         * T poll()         * 用于获取队首元素。出队操作         * 获取后,队列中将不再包含该元素         */        String str = queue.poll();        System.out.println(str);        System.out.println(queue);        /*         * T peek()         * 用于获取队首元素,仅引用,不做出队操作         */        str= queue.peek();        System.out.println(str);        System.out.println(queue);        /*         *遍历队列          *遍历队列是一次性,遍历了出去了队列里就没了。         */        while(queue.size()>0){            String str1 = queue.poll();            System.out.println(str1);        }        System.out.println(queue);    }

这里写图片描述

Deque

双端队列,队列的两端分别可以入队(offer)和出队(poll)
如果Deque限制为只能从一端入队和出队,则可实现 栈 (Stack)。先进后出。入栈push。出栈pop

当一系列操作有可追溯性的时候

这里写图片描述

public static void main(String[] args) {        Deque<String> stack = new LinkedList();        /*         * 入栈         */        stack.push("a");        stack.push("b");        stack.push("c");        stack.push("d");        System.out.println(stack);        /*         * 出栈 pop(),取出后栈中会删除此元素         */        String str = stack.pop();        System.out.println(stack);        /*         * 同样,遍历栈也是一次性的         */        while(stack.size()>0){            String str1 = stack.pop();            System.out.println(str1);           }    }

这里写图片描述

Map

key:value

python的字典。。。

例如 学科对应 分数

public static void main(String[] args) {        //注意是 HashMap        //一般key是一个类型,value是一个类型        //key是String,value是整数,注意!!!泛型不能是基本类型所以用Integer        Map<String,Integer> map = new HashMap<String,Integer>();        /*         * put是写入,key与对应的value         * 若给定的key在Map中不存在,则是添加新内容         * 返回的是null         * 若给定的key在Map中存在,则是替换value         * 那么返回的是被替换掉额value         */        map.put("数学", 90);        map.put("语文", 95);        map.put("物理", 93);        map.put("化学", 94);        map.put("体育", 91);        map.put("地理", 80);        System.out.println(map);        /*         * v get(K k)         * 根据给定的key获取对应的value         * 传入个不存在的返回null         */        Integer num = map.get("化学");                System.out.println("化学:"+num);        /*         *boolean containsKey(K k)         *判断当前Map中是否含有给定的key         *是否含有是根据key的equals判断的         *          */        //查看是否含有数学            if(map.containsKey("数学")){                System.out.println("包含数学");            }            else{                System.out.println("不包含数学");            }            /*             * 删除某个元素,给定key             * 就删除这一条了,key和value             * 返回值为删除的value             */            map.remove("地理");            System.out.println(map);    }

这里写图片描述

快速创建

空白处—右键–源代码–右下就各种快捷了,创建构造函数,hashcode,set,get方法~~

遍历Map:

public static void main(String[] args) {        Map<String,Integer> map = new HashMap<String,Integer>();        map.put("数学", 90);        map.put("语文", 95);        map.put("物理", 93);        map.put("化学", 94);        map.put("体育", 91);        map.put("地理", 80);        System.out.println(map.keySet());        System.out.println(map.values());        /*         * 遍历所有的key         * Set<K> keySet()         * 该方法可以获取Map中所有的key,并将它们存入一个Set集合中         * 返回,所以,遍历该集合就等于遍历所有的key了         */        Set<String>keyset = map.keySet();        for(String key:keyset){            System.out.println(key);        }        /*         * 遍历键值对         * Set<Entry> entrySet()         * 该方法会将每一组key-value存入一个Entry实例中,并将这些Entry实例存入一个Set集合中并         * 返回,我们只需要遍历该集合,拿到每一个Entry实例并获取其中的key与value即可         */        //Entry也要泛型相当于一列:key:value 即  String,Inteher        Set<Entry<String, Integer>> entryset = map.entrySet();        //用新循环遍历,注意 Entry        for(Entry<String,Integer> e:entryset){            //利用getKey和getValue获取key和Value            String key =e.getKey();            Integer value = e.getValue();            System.out.println("key:"+key+" "+"value:"+value);        }        //        for(Integer I:map.values()){            System.out.println(I);        }        for(String S:map.keySet()){            System.out.println(S);        }
0 0
原创粉丝点击