JavaSE
①LinkedList和ArrayList的区别:简单来说后者底层实现是数组,而前者是双向链表。
②LinkedList的底层实现:对于集合的添加操作就是链表的操作原理,如果是空的添加,那么首尾指针都是当前节点,如果不是空,那就是当前的Last指针指向待添加节点,然后使Last指针指向该节点。
而get方法的实现,在底层用了一个提高速率的方法,如果是在前半段从头往后找。反之从后往前找。
③Iterable、iterator()、Iterator之间的区别:这是个重点。首先Iterable是一个接口,他被Collection所继承,在他里面实现了一个抽象方法就是iterator()。抽象方法需要在实现类中具体实现,这个实现类是ArrayList。方法的返回值就是Iterator接口,这就是三者的联系。在Iterator接口中实现了我们常用的两个方法,hasNext和next,这两个是抽象方法,同样需要具体实现,他在Itr这个类(ArrayList的内部类)中得到了具体实现。很重要的一个知识点、。
④ListIterator迭代器:自己就能够实现迭代和增加操作,功能更强大。而Iterator迭代器在迭代中调用对象进行增加会报错。
-------分割线--------
上面为止就把List接口这边的学完了。然后是Set接口这边。
⑤相比List来说set是无序且唯一的。因为前者是链表或者数组。Set唯一代表一样的值不会重复存储。
⑥HashSet:在HashSet中索引值是通过equals和hascode方法计算的,如果两个不同的数据索引值相等,会接着用链表储存数据位置。
⑦LinkedHashSet:这个set是有序的,因为有一个另外的链表记录数据顺序。
⑧比较器:再说TreeMap前要说一下比较器,他是Treemap实现的基础。比较器分为内部和外部,内部的是类直接实现接口,在类中重写方法。外部的是自定义类实现接口,重写方法。更好的继承。
⑨TreeMap:我们既可以说他无序,也可以说他有序。有序是因为他是从小到大排列。存放时用了二叉树,比较大小用了比较器。
-------分割线--------
胃肠感冒了。。今天到此为止,明天算法+Map