java中常用的数据结构

  1. PriorityQueue优先队列
    //定义优先队列的比较器
     Comparator<String> cmp;
     cmp = new Comparator<String>() {  
     @Override
     public int compare(String o1, String o2) {
         // TODO Auto-generated method stub
         return o1.val-o2.val;
     }
     };
     //建立队列
     PriorityQueue<String> q = new PriorityQueue<String>(cmp);
        ArrayList<Integer> result = new ArrayList<>();
        for(int i = 0; i < numbers.length; i++){
            result.add(numbers[i]);
        }
        Collections.sort(result, new Comparator<Integer>(){
            public int compare(Integer a, Integer b){
                String s1 = a+""+b;
                String s2 = b+""+a;
                return s1.compareTo(s2);
            }
        });
  1. peek() //返回队首元素
  2. poll() //返回队首元素,队首元素出队列
  3. add() //添加元素
  4. offer() //添加元素
  5. size() // 返回队列元素个数
  6. isEmpty() // 判断队列是否为空, 为空返回true, 不空返回false
    1. Queue队列
    Queue<String> queue = new LinkedList<String>();
    offer()、poll()、peek()
    获取头元素的方法
    1. 获取并移除
    poll()   获取并移除此队列的头,如果此队列为空,则返回 null
    remove()  获取并移除此队列的头,如果此队列为空,则抛出NoSuchElementException异常
    1. 获取但不移除
    peek()  获取队列的头但不移除此队列的头。如果此队列为空,则返回 null
    element()  获取队列的头但不移除此队列的头。如果此队列为空,则将抛出NoSuchElementException异常
    1. 添加元素的方法
    offer()  将指定的元素插入此队列(如果立即可行且不会违反容量限制),插入成功返回 true;否则返回 false。当使用有容量限制的队列时,offer方法通常要优于 add方法——add方法可能无法插入元素,而只是抛出一个 IllegalStateException异常
    add()  将指定的元素插入此队列
    1. Stack
    import java.util.Stack
    push()、pop()、peek()、empty()
    1. ArrayList 动态数组
      ![图片说明](https://uploadfiles.nowcoder.com/images/20200309/128682809_1583737628962_C69F2426466D337F09C74E2B2F26755A "图片标题")
      contains();
      size();
    2. LinkedList 双向链表数组
      ![图片说明](https://uploadfiles.nowcoder.com/images/20200309/128682809_1583737914978_FE189B44F25B61E308C4B92E74C99141 "图片标题")
    3. StringBuilder常用方法
  7. append(String str)/append(Char c);
  8. toString();
  9. setCharAt(int i, char c);
  10. length();
  11. charAt();
全部评论

相关推荐

面试官全程关摄像头1.自我介绍一下2.React和Vue哪个更熟悉一点3.你在之前那段实习经历中有没有什么技术性的突破(我只是实习了44天工作28天,我把我能说的都说了)4.你封装的哪个表单组件支不支持动态传值5.自己在实习阶段Vue3项目封装过hook吗6.hook有什么作用7.Vue2和Vue3的响应式区别(我说一个是proxy是拦截所有的底层操作,Object.defineProperty本身就是一个底层操作,有些东西拦截不了,比如数组的一些操作还有等等,面试官就说实在要拦截能不能拦截????我心想肯定不行呀,他的底层机制就不允许吧)8.pinia和vuex的区别(这个回答不出来是我太久没用了)9.pinia和zustand的区别,怎么选(直接给我干懵了)(我说react能用pinia吗  他说要用的话也可以)10.渲染一万条数据,怎么解决页面卡顿问题(我说分页、监听滚轮动态加载,纯数据展示好像还可以用canvas画)(估计是没说虚拟表单,感觉不满意)11.type和interface的区别12.ts的泛型有哪些作用(我就说了一个结构相同但是类型不同的时候可以用,比如请求响应的接口,每次的data不同,这里能用一个泛型,他问我还有什么)13.你项目用的是React,如果让你再写一遍你会选择什么14.pnpm、npm、yarn的区别15.dependencies和devdependencies的区别总而言之太久没面试了,上一段实习的面试js问了很多。结果这次js一点没问,网络方面也没考,表现得很一般,但是知道自己的问题了  好好准备,等待明天的影石360和周四的腾讯了  加油!!!
解zj:大三的第一段面试居然是这样的结局
查看15道真题和解析
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务