java经典面试题及答案,java面试经典题目
一、Collection 和 Collections 的区别
(更多相关面试问题推荐:java面试问题)
Java.util.Collection是集合框架的父接口。它为集合对象上的基本操作提供了一个通用接口方法。集合接口在Java类库中有很多具体的实现。集合接口的意义是为各种具体的集合提供一个最大化的统一操作方式。
Java.util.Collections是一个包装类。它包含各种与集合操作相关的静态多态方法。这个类不能实例化,就像工具类一样,服务于Java的集合框架。他提供了一系列静态方法来对各种集合进行搜索、排序、线程安全和其他操作。
二、Set 里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用==还是equals()?它们有何区别?
==:
基本型:比较的是值是否相同。
类型:比较的是地址值是否相同。
等于():
引用类型:默认比较地址值,可以重写。比较的是对象的成员变量值是否相同。
如果一个类没有定义自己的equals方法,那么它默认的equals方法(继承自Object类)就是使用==运算符,这也是为了比较两个变量指向的对象是否是同一个对象。此时使用equals和使用==会得到相同的结果,如果比较两个独立的对象,总会返回false。
如果您编写一个类,希望比较该类创建的两个实例对象的内容,那么您必须重写equals方法,并编写自己的代码来确定在什么情况下这两个对象的内容可以被视为相同。
(相关教程推荐:java入门教程)
三、Iterator的作用是什么
用于遍历集合中的元素,这比for和for each更好:
因为节点的删除报告异常,自己写的数据结构也能实现。
四、HashSet和TreeSet有什么区别,什么时候用它们?
基本:
1.Treeset是用二叉树实现的,TreeSet中的数据是自动排序的,所以不允许空值。
2.HashSet是通过哈希表实现的。HashSet中的数据是无序的,可以放null,但只能放一个null。两者中的值不能重复,就像数据库中的唯一约束一样。
3.HashSet要求put对象必须实现HashCode()方法。put对象由hashcode代码标识,而内容相同的String对象具有相同的hashcode,因此put内容不能重复。但是同一类的对象可以放在不同的实例中。
(视频教程推荐:java视频教程)
时间复杂度:
HashSet是由哈希表实现的,所以它的元素是无序的。add(),remove(),contains()方法的时间复杂度为O(1)。
ESET是通过一个树形结构实现的,它的元素是有序的。因此,add()、remove()、contains()方法的时间复杂度为O(logn)。
用TreeSet保存自定义类对象时,自定义所在的类必须实现Comparable接口。如果不实现这个接口,就无法区分大小关系。而且,如果要在TreeSet中排序,就必须对所有字段进行比较,也就是说,在TreeSet中,comparato()方法是否返回重复元素取决于是否为0。
TreeSet依靠可比性来区分重复数据;
HashSet依靠hashCode()和equals()来区分重复数据。以上是java经典面试题(8)的详细内容。更多请关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。