ZhaoJiu's Studio.

JAVA SE 08 java容器

字数统计: 980阅读时长: 3 min
2019/04/21 Share

Collection/Set/List的联系和区别?

  • Collection是java集合的顶级接口,存储一组不唯一、无序的对象。
  • List接口和Set接口是Collection接口的2个子接口。
  • List接口存放一组不唯一、有序的对象。
  • Set接口存放一组唯一、无序的对象。

Set和List的特点和区别?

  • List是有序的Collection,使用此接口,能够精确的控制每个元素插入的位置。用户能够使用索引来访问List元素。
  • Set是存放一组唯一的、无序的对象,和List使用方法类似,但是不可以使用索引。

Collection接口中常用的方法?

  • add(Object obj) 添加一个对象的引用
  • size() 容器中元素的数量
  • remove(Object obj) 移除一个对象
  • removeAll(Collection co) 删除与集合co中相同的元素
  • retainAll(Collection co) 只保留与集合co中相同的元素
  • contains(Object obj) 判断当前集合是否有obj对象
  • isEmpty() 判断当前集合是否为null
  • iterator() 生成此集合的迭代器

ArrayList、LinkedList的区别?

  • ArrayList和LinkedList都实现了List接口,都具备List中元素有序、不唯一的特点。ArrayList实现了长度可变的数组,在内存的分配连续空间。遍历元素和随机访问元素的效率比较高。
  • LinkedList采用了链表的存储方式。插入、删除的效率比较高。

HashSet和TreeSet的区别?

  • HashSet采用的是HashTable哈希表存储结构,优点是添加速度快,查询速度快,删除速度快。缺点是无序。
  • TreeSet采用的是二叉树的存储结构,优点是有序查询速度比HashSet快,缺点是查询速度没有HashSet快。

使用HashSet存储自定义对象,为什么要重写hashCode()和equals()?

HashSet存储用的Hash表结构,哈希表需要用到hashCode()和equals()方法。HashCode()产生hash值以计算内存位置。

Map中,key能否重复,如果重复,会发生什么事情?

key是无序的,唯一的,如果添加重复的key,会把前面的key的值给覆盖掉。

采用增强for循环来遍历没有指定泛型的List或是Set,可以遍历吗?

可以遍历,遍历其Object

如果想在遍历的时候删除元素,采用哪种遍历方式比较好?

采用Iterator接口,Iterator有移除元素的remove方法

资源文件有什么作用?

资源文件是用来配置信息的,如数据库信息、键值对信息…。程序里要有个方法来读取资源文件里面的配置信息。如果没有资源文件,那么配置信息就要写在代码里,需要修改信息的时候,就不得不修改代码。有了资源文件之后,需要修改信息,直接修改资源文件,不用修改代码,保证了代码的封装性。

Vector和ArrayList的区别和联系?

  • 实现原理相同,功能相同,都是长度可变的数组结构,很多情况下可以相互通用。
  • Vector是早期的JDK接口,ArrayList是替代Vector接口的新接口
  • Vector线程安全,ArrayList重速度轻安全,是线程不安全的,
    长度增长时,Vector默认增长1倍,ArrayList增长50%

HashTable和HashMap的区别联系?

  • HashTable是早期JDK提供的接口,HashMap是新JDK提供的接口
  • HashTable继承Directory类 HashMap实现Map接口
  • HashTable线程安全,HashMap线程不安全
  • HashTable不允许null HashMap允许null

JAVA主要容器的选择依据和重要场景

  • HashTable和Vector是线程安全的,因此在多线程的情况下使用,HashMap和ArrayList是线程不安全的,建议在单线程情况下使用
  • 除去排序时使用TreeSet和TreeMap 其它时候都应该使用HashSet和HashMap 效率更高
  • ArrayList由数组构建 LinkedList由双向链表构建 在删除和添加频繁操作的时候使用LinkedList 在查询频繁的操作时候使用ArrayList
CATALOG
  1. 1. Collection/Set/List的联系和区别?
  2. 2. Set和List的特点和区别?
  3. 3. Collection接口中常用的方法?
  4. 4. ArrayList、LinkedList的区别?
  5. 5. HashSet和TreeSet的区别?
  6. 6. 使用HashSet存储自定义对象,为什么要重写hashCode()和equals()?
  7. 7. Map中,key能否重复,如果重复,会发生什么事情?
  8. 8. 采用增强for循环来遍历没有指定泛型的List或是Set,可以遍历吗?
  9. 9. 如果想在遍历的时候删除元素,采用哪种遍历方式比较好?
  10. 10. 资源文件有什么作用?
  11. 11. Vector和ArrayList的区别和联系?
  12. 12. HashTable和HashMap的区别联系?
  13. 13. JAVA主要容器的选择依据和重要场景