1、Collection 和 Collections的区别。
Collection是集合类的上级接口,继承与他的接口主要有Set和List.
Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。
2、Collection框架。
集合框架(Collection Framework)泛指java.util包的若干个类和接口,如Collection,List,ArrayList,LinkedList,Vector(自动增长数组),HashSet,HashMap等.
集合框架中的类主要封装的是典型的数据结构,如动态数组,链表,堆栈,集合,哈希表等.
集合框架类似编程中经常用到的工具类,使得编码只需要专注于业务层的实现,不需要从底层实现相关细节,如:“数据结构的封装”和“典型算法的实现”。
3、Collection框架中实现比较要实现什么接口。
Comparable/comparator
4、List, Set, Map是否继承自Collection接口。
List,Set是,Map不是
5、List、Map、Set三个接口,存取元素时,各有什么特点。
List以特定次序来持有元素,可有重复元素。
Set有自己的内部排序,无法拥有重复元素。
Map保存key-value键值对。
6、List和Map的区别。
List是存储单列数据的集合,Map是存储键值对双列数据的集合,List中存储的数据是有顺序,并且允许重复;Map中存储的数据是没有顺序的,其键是不能重复的,但值是可以重复的。
7、说出ArrayList,Vector,LinkedList的存储性能和特性。
ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。
LinkedList是线程不安全的,LinkedList提供了一些方法,使得LinkedList可以被当作堆栈和队列来使用。
8、HashMap和Hashtable的区别。
HashMap和Hashtable都实现了Map接口,主要区别在于HashMap的方法不是同步的,Hashtable是同步的,所以在多线程场合要手动同步HashMap,这个区别就像ArrayList和Vector一样。HashMap允许null值(key和value都可以,只容许有一个null值的key,可以有多个null值的value),Hashtable不允许null值(key和value都不可以)。Hashtable有一个contains(Object value),功能和containsValue(Object value)功能一样
总之有三条:
(1)历史原因:Hashtable继承自陈旧的Dictionary类,而HashMap是Java1.2引进的Map接口的一个实现。
(2)同步性: Hashtable是线程安全的,是同步的,而HashMap是线程不安全的,不是同步的,在多个线程访问Hashtable时,不需要为它的方法实现同步,而HashMap 就必须为之提供外同步(Map m = Collections.synchronizedMap(new HashMap()))。
(3)值:只有HashMap可以将空值作为一个表的条目的key或value。
9、 ArrayList和Vector的区别。
这两个类都实现了List接口,List接口继承了Collection接口,他们都是有序集合.即存储在这两个集合中元素的位置都是有顺序的,可以按位置索引号来取出某个元素,并且其中的数据是允许重复的.这是与HashSet之类集合的最大不同处,HashSet之类的集合不能按索引号去检索其中的元素.也不允许有重复的元素.(本题目本与hashset没有任何关系,但为了说清楚ArrayList和Vector的功能,我们使用对比方式,有利于说明问题)
接着说ArrayList与Vector的区别,主要包括两个方面:
(1)同步性
Vector是线程安全的,也就是说它的方法之间线程同步.而ArrayList是线程不安全的,它的方法之间的线程数不同步,如果只有一个线程会访问到集合,那么最好用ArrayList,因为它不考虑线程安全,效率会高些.如果有多个线程会访问到集合,那么就使用Vector,因为不需要我们自己去考虑和编写线程安全代码.
备注:对于Vector和ArrayList,Hashtable和HashMap,线程安全是前2个,记住Vector和Hashtable是旧的,是java一诞生就提供了的,他们是线程安全的.而Arratlist和HashMap是java2才提供的,他们是线程不安全的.
(2)数据增长
ArrayList和Vector都有一个初始的容量大小,但存储在他们里面的元素个数超过了容量时,就需要增加ArrayList和Vector的存储空间,每次要增加时,不是只增加一个存储单元,而是增加多个存储单元,每次增加的存储单元的个数在内存空间里和程序效率之间要取得一定的平衡.Vector增长为原来的一倍,ArrayList增加原来的0.5倍.
10、去掉一个Vector集合中重复的元素
Vector newVector = new Vector(); for (int i=0; i<vector.size(); i++){ Object obj = vector.get(i); if(!newVector.contains(obj){ newVector.add(obj); } }
还有一种简单的方式,HashSet set = new HashSet(vector);
11.TreeSet里面放对象,如果同时放入了父类和子类的实例对象,那比较时使用的是父类的compareTo方法,还是使用的子类的compareTo方法,还是抛异常!
(应该是没有针对问题的确切答案,当前的add方法放入的是哪个对象,就调用哪个对象的compareTo方法,至于这个compareTo方法怎么做,就看当前这个对象的类中是如何编写这个方法的)
实验代码:
public class Parent implements Comparable { private int age = 0; public Parent(int age) { this.age = age; } public int compareTo(Object o) { System.out.println("method of parent"); Parent o1 = (Parent) o; return age > o1.age ? 1 : age < o1.age ? -1 : 0; } } public class Child extends Parent { public Child() { super(2); } public int compareTo(Object o) { System.out.println("method of child"); return 1; } } public class TreeSetTest { public static void main(String[] args) { TreeSet set = new TreeSet(); set.add(new Child()); set.add(new Parent(3)); set.add(new Parent(4)); } }
12、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
Set里的元素是不能重复的,元素重复与否是使用equals()方法进行判断的。
equals方法(是String类从它的超类Object中继承的)被用来检测两个对象的内容是否相等。== 用于比较引用和比较基本数据类型时具有不同的功能:比较基本数据类型,如果两个值相同,则结果为true;而在比较引用时,如果引用指向内存中的同一对象,结果为true。
13、你所知道的集合类都有哪些?主要方法?
最常用的集合类是 List 和 Map。 List 的具体实现包括 ArrayList、LinkedList 和 Vector,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象的元素列表。 List 适用于按数值索引访问元素的情形。
Map 提供了一个更通用的元素存储方法。 Map 集合类用于存储元素对(称作"键"和"值"),其中每个键映射到一个值。
Collection
ArrayList/LinkedList/Vector List
HashSet/TreeSet Set
HashMap/HashTable/TreeMap Map
对于set,大概的方法是add,remove, contains;对于map,大概的方法就是put,remove,contains等,我记住的一些思想就是List类会有get(int index)这样的方法,因为它可以按顺序取元素,而set类中没有get(int index)这样的方法。List和set都可以迭代出所有元素,迭代时先要得到一个iterator对象,所以,set和list类都有一个iterator方法,用于返回那个iterator对象。map可以返回三个集合,一个是返回所有的key的集合,另外一个返回的是所有value的集合,再一个返回的key和value组合成的EntrySet对象的集合,map也有get方法,参数是key,返回值是key对应的value。
相关推荐
java Collection List Map Set集合详细讲解,
7. **文档注释**:为了方便其他开发者使用你的自定义集合类,记得添加详细的Javadoc注释,说明类的用途、方法的参数和返回值等信息。 自定义集合类的一个例子是,你可能想要创建一个支持优先级排序的队列,这时可以...
Java集合类是Java语言中用来存储数据的结构,它们是Java开发中非常重要的组件。在Java 2平台之前,集合框架的组成较为零散,自Java 2平台的JDK 1.2版本之后,引入了集合框架(Collections Framework),为集合类提供...
java.util 中的集合类包含 Java 中某些最常用的类。 最常用的集合类是 List 和 Map。 List 的具体实现包括 ArrayList 和 Vector,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象元素列表。 List 适用...
Java集合容器是Java编程语言中用于存储和管理对象的核心组件。在Java中,集合框架提供了多种数据结构,如列表(List)、集(Set)和映射(Map),以适应不同的数据处理需求。以下是对这些主要知识点的详细说明: 1....
内容概要:本文详细介绍了Java集合框架的核心概念和常见应用场景,涵盖集合的基本概念、特点、集合与数组的...其他说明:文章提供了丰富的代码示例和实际应用案例,帮助读者更好地理解和掌握Java集合框架的核心内容。
由于文件内容包含了一些链接,指向具体的GitHub项目,说明作者在整理Java知识点的过程中还参考了网上的资源,并结合自己的思考进行了整理。这些项目是作者为了学习目的而进行的公开分享,内容可能涉及到机器学习、...
三、Java集合框架 3.1 集合接口:List、Set、Queue等接口定义了各种类型的集合,提供了添加、删除、查找等操作。 3.2 实现类:ArrayList、LinkedList、HashSet、HashMap等是常用的集合实现类,它们各有特点,适用...
最后,关于学习资源,"细说Java之常用集合类.pdf"这本书籍教程应该详细介绍了这些集合类的用法和实现细节,可以帮助开发者更好地理解和运用Java集合框架。"下载说明.txt"可能包含获取更多资源的指南,如"A5下载- 更...
内容概要:本文档是一份详细的Java集合面试题...其他说明:此文档不仅有助于面试准备,同时也是日常工作中优化代码和解决集合类相关问题的重要参考资料。建议读者结合实际项目进行练习,并关注JDK版本更新带来的变化。
本篇文章将详细解释标题"1216集合类的说明与区别"所涉及的Java集合类,主要关注Collection、List、Set以及Map接口及其实现类的特性。 首先,我们来看Collection接口,它是所有集合类的基础。Collection接口代表了一...
内容概要:本文详细介绍了Java集合框架的重要性和在Android开发中的应用。首先,阐述了集合框架的基本概念,包括接口(Collection、Set、List、Map)和其实现类(ArrayList、LinkedList、HashSet、TreeSet、HashMap...
分析集合类的源码有助于理解其实现细节,例如`ArrayList`的扩容机制、`HashMap`的哈希冲突解决策略等。 12. **测试**: 对集合操作的测试是确保代码正确性的关键步骤。可以使用JUnit等单元测试框架编写测试用例,...
在这个压缩包中,我们可能找到了作者自己编写的关于Java集合类的实例源代码。Java集合框架是Java编程中不可或缺的一部分,它提供了组织和操作数据的高效工具。 Java集合类主要包括接口(如List、Set和Map)和实现...
在Java编程中,集合类遍历的同时进行删除操作是一个常见的需求,但如果不正确地执行,可能会导致`ConcurrentModificationException`。这个问题主要出现在迭代器正在遍历集合时,集合本身被修改的情况。以下是对这个...
Java集合框架是Java编程语言中用于存储和管理对象的核心组件,它为开发者提供了灵活且高效的数据结构选择。这个框架的设计目标是确保高性能、高度互操作性以及易于扩展。以下是对标题和描述中涉及的知识点的详细说明...
java集合类的详细说明 包括list set map等等
本文深入介绍了Java集合框架的重要组成部分及其相关接口与实现类,覆盖了主要集合类型(List、Set、Map等)的特点及基本使用方法,并对比了不同集合类间的优劣及适用场景。此外,本文还探讨了集合框架的高级特性(如...
Java集合框架是Java编程语言中不可或缺的部分,它提供了一种高效、灵活的数据组织方式。集合框架包括了多种接口和类,如List、Set、Map,它们各自有着独特的用途和实现方式。 1. List接口:List是有序的集合,允许...
以下是对Java集合框架的详细说明: 1. **集合接口**: - `Collection`:这是所有集合的顶级接口,定义了集合的基本操作,如添加、删除和检查元素。它分为两种主要子类型:`Set`和`List`。 - `Set`:不允许重复...