- 数组优点和缺点?
优点:依照索引查询效率高 缺点:长度在初始化时固定,且固定不变 删除和添加效率低下 无法直接保存映射关系 缺乏封装,操作繁琐 |
- Collection、List、Set、Map的关系及特点
都是接口 Collection 接口,存储一组无序,不唯一的对象 List 接口,存储一组有序(索引顺序),不唯一的对象 Set 接口,存储一组唯一,无序的对象 Map 接口存储一组键值对象,提供key到value的映射 --key 唯一 无序 --value 不唯一 无序 |
- ArrayList的特点是什么?
在内存中分配连续的存储空间,实现了长度可变的数组(本质是可变长度数组) 优点:遍历元素和随机访问元素(按索引)的效率比较高 缺点:添加和删除需大量移动数据,效率低下,按照内容查询效率低 |
- LinkedList的特点是什么?相对ArrayList,它有哪些特有的方法?
有序,不唯一(可重复) 采用链表存储方式 增加了首尾相关的操作,first和last |
- Set集合有什么特点?
无序,唯一(不重复) |
- HashSet有什么特点?
采用hashtable 哈希表存储结构 优点是添加、查询、删除速度快 缺点是无序 |
- 哈希表的工作原理?
调用hashCode()获取哈希码x 执行表达式y=k(x)=x%11 ,其中x是哈希码,y存储位置 |
- LinkedHashSet有什么特点?为什么有序?
采用哈希表存储结构,同时使用链表维护次序 有序(添加顺序) LinkedHashSet 继承 HashSet 没有特殊的方法 |
- TreeSet有什么特点?为什么有序?
数据结构:二叉树(中序遍历) TreeSet有序,并且是数据的大小顺序 内部比较器 实现接口 Comparable 见代码 |
- TreeSet存储自定义数据类型数据,会报ClassCastException,如何解决?
让Student类实现Comparble接口,重写compareTo() 实现Comparble接口 内部比较器 实现Comparator接口,外部比较器 可以采用匿名内部类 |
- 什么时候需要重写hashCode方法?
使用HashTable、HashMap、HashSet |
- Map集合有什么特点?
key-value映射 键值对 |
- HashMap、LinkedHashMap、TreeMap各自有什么特点?
HashMap Key 无序 唯一 (Set) Value 无序 不唯一 (Collection) LinkedHashMap 有序的HashMap 速度快 TreeMap 有序 速度没有hash快 |
- 哈希表有哪些数据结构?(百度扩展)
15、Collection和Collections有什么区别?
Collection是Java提供的集合接口,存储一组不唯一,无序的对象。它有两个子接口List和Set。 Collections类,专门用来操作集合类 ,它提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作 |
16、for-each的特点及缺点?
优点: 遍历的时候更加简介,特别是遍历Map集合的时候 效率和for循环相同 不用关心集合下标的问题,减少的出错率 缺点: 不能同时遍历多个集合 在遍历的时候无法删除和修改集合数据 |
- Iterator的特点
Iterator在遍历元素过程中,有线程修改集合元素会有ConcurrentModificationEception异常 Iterator本身不具有装载数据功能,需依附Collection对象使用 next()是用游标指向的方式返回下一个元素的 |
- 泛型的作用?
1.类型安全 泛型的主要目标是提高 Java 程序的类型安全。编译时的强类型检查;通过知道使用泛型定义的变量的类型限制,编译器可以在一个高得多的程度上验证类型假设。没有泛型,这些假设就只存在于程序员的头脑中(或者如果幸运的话,还存在于代码注释中)。 2.消除强制类型转换 泛型的一个附带好处是,消除源代码中的许多强制类型转换。这使得代码更加可读,并且减少了出错机会。 3.更好的代码复用性 |
19、Vector和ArrayList的联系和区别
实现原理相同,功能相同,都是长度可变的数组结构,很多情况下可以互用。 Vector是早期JDK类,ArrayList是替代Vector的新类 Vector线程安全(同步),ArrayList重速度轻安全,线程非安全 长度需增长时,Vector默认增长一倍,ArrayList增长50% |
20、集合和数组的比较
数组不是面向对象的,存在明显的缺陷,集合完全弥补了数组的一些缺点,比数组更灵活更实用,可大大提高软件的开发效率,而且不同的集合框架类可适用于不同场合。 1:数组的按索引查询效率高于集合类。 2:数组能存放基本数据类型和对象,而集合类中只能放对象。 3: 数组容量固定且无法动态改变,集合类容量动态改变。 4:数组无法判断其中实际存有多少元素,length只告诉了array容量 5:集合有多种实现方式和不同适用场合,不像数组仅采用顺序表方式 6:集合以类的形式存在,具有封装、继承、多态等类的特性,通过简单的方法和属性调用即可实现各种复杂操作,大大提高软件的开发效率。 |
- ArrayList和LinkedList 的联系和区别
都实现了List接口 有序 不唯一(可重复) ArrayList 在内存中分配连续的空间,采用了顺序表结构,实现了长度可变的数组 优点:遍历元素和随机访问元素的效率比较高(通过索引) 缺点:添加和删除需大量移动元素效率低,按照内容查询效率低 LinkedList 采用链表存储方式。 缺点:遍历和随机访问元素效率低下 优点:插入、删除元素效率比较高(但是前提必须先以低效率查询才可。如果插入删除发生在头尾可以减少查询次数) 增加了首尾相关的操作 |
- HashMap和Hashtable的联系和区别
实现原理相同,功能相同,底层都是哈希表结构,查询速度快,在很多情况下可以互用 两者的主要区别如下 Hashtable是早期JDK提供的集合类,HashMap是新版JDK提供的集合类 Hashtable继承Dictionary类,HashMap继承AbstractMap<K,V>实现 两者都实现了Map接口 Hashtable线程安全(速度慢),HashMap 非线程安全(速度快) Hashtable不允许null值,HashMap允许null值(不建议) |
23、hashcode相等两个类一定相等吗?equals呢?相反呢?(面试题)
(4)面试题:hashcode相等两个类一定相等吗?equals呢?相反呢?_依本多情的博客-优快云博客_hashcode相等
- Entry接口的特点
Entry是Map的内部接口,用于存储键值 |