今天犹豫是晚上才开始计划,所以学习的内容较少。
-
熟悉了一下如何使用linkedList和平衡二叉树实现简单的map以及set,并在此基础上刷了leetcode三道题目:347. Top K Frequent Elements、349.Intersection of Two Arrays 、350.Intersection of Two ArraysII。这三道题整体难度不大,不进行详细记录。但是在题目中遇到了几个问题,在此记录
-
在做题时遇到了HashSet/TreeSet,突然发现对这两种不是很能区别,并以此去学习区分HashMap和TreeMap
set的相关内容
1). HashSet保存的数据是无序的,TreeSet保存的数据是有序的,TreeSet保存自定义对象的时候一定要实现Compareable接口,TreeSet依靠的是Compareable来区分重复数据,HashSet依靠的是hashCode、equals来区分重复数据。
2) HashSet 不能保证元素的排列顺序,不是同步的,元素可以有且最多只能有一个null
3)LinkedHashSet同样是根据元素的hashcode来决定元素的存储位置,但是它同时使用链表维护元素的次序,访问元素时会以添加的顺序访问元素
4)LinkedList在迭代set中全部元素时,性能比HashSet好,但是插入顺序查
5) 引申线程安全的集合:Vector,HashTable,Properties,java.util.concurrent包下的集合map的相关内容 1) HashMap允许使用null作为主键和值 2)HashMap实例有两个参数影响其性能:初始容量和加载银子,容量是哈希表中桶的数量,初