Day21

把昨天的3、4题通过面向百度编程,做出来了。坚持了21天的学习,每天基本都有收获,感觉自己逐渐对Java有一定的了解了,开始用生锈的大脑记东西了。加油OVO

Day21

 

栈是后进先出(一叠书),队列是先进先出(超市排队买东西)。

 

 

今日小问题

1.Map存储数据的特点是什么?并指明key、value、entry存储数据的特点。

双列数据,存储key-value对数据。

key:无序的,不可重复的。--->Set存储

value:无序的,可重复的。--->Collections存储。

key-value :无序的、不可重复的 --->Set存储。

 

2. 描述HashMap的底层实现原理(jdk8版)

有数组,链表,红黑树。

 

3.Map中常用实现类有哪些?各自有什么特点?

HashMap:Map的主要实现类。线程不安全,效率高,可以存储null的key和value。

--------LinkedHashMap:保证在遍历Map时,能按添加的存储数据的顺序实现遍历。

原因:在原有的HashMap的基础上多了一对指针,可以指向前一个和后一个元素。对于频繁的遍历操作 LinkedHashMap效率高于HashMap

TreeMap:保证按照添加的key-value对进行排序,实现排序遍历,此时考虑key的自然排序或定制排序,底层使用红黑树。

Hashtable : 作为古老的实现类,线程安全,效率低,不能存储null的key和value

--------Properties:常用来处理配置文件。key和value都是String类型。

4. 如何遍历Map中key-value对,代码实现。

public class test {
   @Test
   public void test1(){
       HashMap map =new HashMap();
       map.put("aa",11);
       map.put("bb",22);
       map.put("cc",33);
       Set set1 =map.keySet();
       Iterator iterator = set1.iterator();
       while(iterator.hasNext()){
           Object key = iterator.next();
           Object value = map.get(key);
           System.out.println(key +""+value);
      }
  }
}

 

 

5. Collecion 和Collections区别

Collection是一个接口,

Collections是一个工具类,操作collction和map的工具类

 

面试题:负载因子值的大小,对HashMap有什么影响

 

负载因子的大小决定了HashMap的数据密度。

负载因子越大密度越大,发生碰撞的几率越高,数组中的链表越容易长,造成查询或插入时的比较次数增多,性能会下降。

负载因子越小,就越容易触发扩容,数据密度也越小,意味着发生碰撞的几率越小,数组中的链表也就越短,查询和插入时比较的次数也越小,性能会更高。但是会浪费一定的内容空间。而且经常扩容也会影响性能,建议初始化预设大一点的空间。

按照其他语言的参考及研究经验,会考虑将负载因子设置为0.7~0.75,此时平均检索长度接近于常数。

 

泛型

 

//这里继承了Order<Integer>,所以SubOrder不用定义泛型了。这里的SubOrder就是个普通类了。不是泛型类。
public class SubOrder extends Order<Integer>{
}

区别:

上一篇:TP6记录错误日志


下一篇:全栈微信小程序商城 学习笔记3.6 构建全局异常处理类