集合

面试题

Java集合类框架的基本接口?

  • 集合类接口指定了一组叫做元素的对象。
  • 集合类接口的每一种具体的实现类都可以选择以它自己的方式对元素进行保存和排序。
  • 有的集合类允许重复的键,有些不允许。
  • Java集合类提供了一套设计良好的支持对一组对象进行操作的接口和类。

Java集合类里面最基本的接口有:

  • Collection:代表一组对象,每一个对象都是它的子元素。
  • Set:不包含重复元素的Collection。
  • List:有顺序的collection,并且可以包含重复元素。
  • Map:可以把键(key)映射到值(value)的对象,键不能重复。

  • 总共有两大接口:Collection 和Map ,一个元素集合,一个是键值对集合;
  • 其中List和Set接口继承了Collection接口,一个是有序元素集合,一个是无序元素集合;
  • 而ArrayList和 LinkedList 实现了List接口,HashSet实现了Set接口,这几个都比较常用;
  • HashMap 和HashTable实现了Map接口,并且HashTable是线程安全的,但是HashMap性能更好;

为什么集合类没有实现Cloneable和Serializable接口?

  • 克隆(cloning)或者是序列化(serialization)的语义和含义是跟具体的实现相关的。
  • 因此,应该由集合类的具体实现来决定如何被克隆或者是序列化。

Java集合类框架的最佳实践有哪些?

  • 根据应用的需要正确选择要使用的集合的类型对性能非常重要,比如:假如元素的数量是固定的,而且能事先知道,我们就应该用Array而不是ArrayList。
  • 有些集合类允许指定初始容量。因此,如果我们能估计出存储的元素的数目,我们可以设置初始容量来避免重新计算hash值或者是扩容。
  • 为了类型安全,可读性和健壮性的原因总是要使用泛型。同时,使用泛型还可以避免运行时的ClassCastException。
  • 使用JDK提供的不变类(immutable class)作为Map的键可以避免为我们自己的类实现hashCode()和equals()方法。
  • 编程的时候接口优于实现。
  • 底层的集合实际上是空的情况下,返回长度是0的集合或者是数组,不要返回null。
posted @ 2021-01-12 13:26  张三丰学Java  阅读(69)  评论(0编辑  收藏  举报