java常用数据结构以及正则表达式使用练习

//队列add,poll,isEmty-------栈poll,push,empty—priorityQueue,ArrayDeque
如果只是用到队列的先进先出,那用列表就可以了。二叉树的遍历要用栈,而不能用队列

Queue,Stack

public static void main(String args[]){
        /**
         * 双端队列
         */
        // Deque<Integer>deque=new LinkedList<>();

        /**
         * ArrayDeque是先进先出的。   输入[2,1,5,4],则输出[2,1,4,5]
         */
        //Queue<Integer>queue=new ArrayDeque<>();
        /**
         * ArrayDeque是按照优先级出队的(默认是升序出队)。输入[2,1,5,4],则输出[1,2,4,5]
         */
        Queue<Integer>queue=new PriorityQueue<>();

        queue.add(2);
        queue.add(1);
        queue.add(5);
        queue.add(4);
        System.out.println(queue.poll());
        System.out.println(queue.poll());
        System.out.println(queue.poll());
        System.out.println(queue.poll());

        /**
         * 栈:先进后出,输入[2,1,5,4],则输出[4,5,1,2]
         */
        Stack<Integer> stack=new Stack<>();
        stack.add(2);
        stack.add(1);
        stack.add(5);
        stack.add(4);
        System.out.println(stack.pop());
        System.out.println(stack.pop());
        System.out.println(stack.pop());
        System.out.println(stack.pop());
    }

数组

数组既可以实现先进先出,也可以实现后进先出。关键是看你如何遍历

String

反转字符串的几种方法:

//方法1
public String reverse(String str){
    StringBuffer sb=new StringBuffer(str);
    return sb.reverse().toString();
}
//方法2
public String reverse(String str){
        String result="";
        for(int i=str.length()-1;i>=0;i--){
            result+=str.charAt(i);
        }
        return result;
    }

Map

Map.Entry【本意:入口即map的入口】的作用。Map.Entry是为了更方便的输出map键值对。一般情况下,要输出Map中的key 和 value 是先得到key的集合keySet(),然后再迭代(循环)由每个key得到每个value。values()方法是获取集合中的所有值,不包含键,没有对应关系。而key/value的集合Entry(里面有getKey/getValue)可以一次性获得这两个值。(通常用法)

Map<Integer,Integer>map=new HashMap<>();
        map.put(1,2);
        map.put(2,3);
        Iterator iterator= map.entrySet().iterator();
        while(iterator.hasNext()){
            Map.Entry entry= (Map.Entry) iterator.next();
            System.out.println(entry.getValue());
            System.out.println(entry.getKey());
        }
    }

在这里插入图片描述

TreeMap

TreeMap讲解

  • 常用函数

  • K ceilingKey(K key) 返回大于等于(>=)给定键的最小键(比键大一点的&&&向上取整);如果不存在这样的键,则返回 null。
    K floorKey(K key) 返回小于等于(<=)给定键的最大键(比键小一点的&&&&向下取整);如果不存在这样的键,则返回 null。【比如keyset里面是(1,2,4,6)则floorKey(5)返回结果是4】
    K higherKey(K key) 返回严格大于(>)给定键的最小键;如果不存在这样的键,则返回 null。
    K ==lowerKey(K key) ==返回严格小于(<)给定键的最大键;如果不存在这样的键,则返回 null。

  • list+stream+treemap的使用

//测试
    public static void main(String[] args) {
        
            Map<String,Integer> map = Maps.newTreeMap();
            map.put("sssss",-111111111);
            map.put("ss",-111111111);
            map.put("yy",0);
            map.put("lx",5);
            map.put("fyx",2);
            map.put("ztt",3);
            map.put("zzy",10);
            List<Map.Entry<String,Integer>> list = new ArrayList<>(map.entrySet());

            Collections.sort(list,((o1, o2) -> o2.getValue().compareTo(o1.getValue())));
            
            System.out.println(list.get(list.size()-1).getValue());
            System.out.println(list.get(list.size()-1).getKey())  
    }
  • treemap降序排列
 public static void main(String args[]){
        /**
         * 默认是自然排序【即升序排序】
         * 现在使用降序排序
         */
        TreeMap<Integer,Integer>treeMap=new TreeMap<>(new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o2-o1;
            }
        });
        treeMap.put(2,2);
        treeMap.put(1,1);
        treeMap.put(3,3);
        for(Map.Entry entry:treeMap.entrySet()){
            System.out.println("使用Map.Entry遍历TreeMap:v/k如下:"+entry.getValue()+"&&"+entry.getKey());
        }
    }

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值