zoukankan      html  css  js  c++  java
  • 每天来点面试题(二)

    (1)LIst 接口有那些实现类,有什么区别,应用场景有什么区别?

    有三个 ArrayLIst , LinkedLIst  , 还有 Vector

    底层数据结构不一样,

    ArrayList 是 动态数组实现的,

    LinkedList 是链表实现的,

    Vector 和 ArrayLIst 实现方式类似,但是 是线程安全的(也就是有 加锁解锁 的操作,然后就会有额外开销)。

    对于查找数据和少量的增删改 完全可以用 ArrayLIst,因为数组的查找可以直接根据下标(索引)查找,速度特别快,

    而 LinkedListt 适合大量的增删改 ,因为是链表数据结构 ,所以数据不需要像数组那样同步移动,只需要修改链表节点的头尾节点即可,

    而 Vector 就应用比较少了,适合那些对多线程操作要求比较高的,保证线程的同步(同一时刻只有一个线程在操作,线程之间通信有花销)。

    (2)遍历 Map 的几种方式,以及相应适用场景

    有四种

    增强 for 循环

    for (String key : map.keySet()) {
    System.out.println(key+map.get(key));
    }

    迭代器

      while (it.hasNext()) {
       Map.Entry<String, String> entry = it.next();
       System.out.println(entry.getKey() + entry.getValue());
      }

    entrySet

      for (Map.Entry<String, String> entry : map.entrySet()) {
       System.out.println(entry.getKey() +  entry.getValue());
      }

    以及keySet

    Iterator<String> iterator = map.keySet().iterator();
    while (iterator.hasNext()) {
    String key = iterator.next();
    System.out.println(key +  map.get(key));
    }

    知道了有这四种方式之后是不是需要了解一下到底那个速度快点,经常用的又是哪个,

    网上找了找,发现有人做了测试,

    增强 for 循环使用方便,但是大数据处理起来会慢点,

    迭代大概是 for 循环的 1.5 倍,

    entrySet 比 KeySet 快很多,1.5 倍左右。

  • 相关阅读:
    Python爬虫学习遇到的问题
    爬取网页内容后写入文件报错UnicodeEncodeError: 'gbk' codec can't encode的问题解决方案
    第14.6节 使用Python urllib.request模拟浏览器访问网页的实现代码
    Mina源码阅读笔记(一)-整体解读
    使用异步 I/O 大大提高应用程序的性能
    同步和异步,阻塞和非阻塞
    位运算详解
    php引用传值详解
    PHP获取指定地区的天气
    新闻网站开发-手机端-基于Wordpress
  • 原文地址:https://www.cnblogs.com/yishengyishiduaini321/p/7205662.html
Copyright © 2011-2022 走看看