加入收藏 | 设为首页 | 会员中心 | 我要投稿 好传媒网 (https://www.haochuanmei.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > 交互 > 正文

史上最全Java面试题整理(附参考答案)

发布时间:2020-12-24 10:36:47 所属栏目:交互 来源:网络整理
导读:下列面试题都是在网上收集的,本人抱着学习的态度找了下参考答案,有不足的地方还请指正,更多精彩内容可以关注我的微信公众号:Java团长 1、面向对象的特征有哪些方面? 抽象:将同类对象的共同特征提取出来构造类。 继承:基于基类创建新类。 封装:将数据

答:List以特定索引来存取元素,可以有重复元素。Set不能存放重复元素(用对象的equals()方法来区分元素是否重复)。Map保存键值对(key-value pair)映射,映射关系可以是一对一或多对一。Set和Map容器都有基于哈希存储和排序树的两种实现版本,基于哈希存储的版本理论存取时间复杂度为O(1),而基于排序树版本的实现在插入或删除元素时会按照元素或元素的键(key)构成排序树从而达到排序和去重的效果。

56、TreeMap和TreeSet在排序时如何比较元素?Collections工具类中的sort()方法如何比较元素?

答:TreeSet要求存放的对象所属的类必须实现Comparable接口,该接口提供了比较元素的compareTo()方法,当插入元素时会回调该方法比较元素的大小。TreeMap要求存放的键值对映射的键必须实现Comparable接口从而根据键对元素进行排序。Collections工具类的sort方法有两种重载的形式,第一种要求传入的待排序容器中存放的对象必须实现Comparable接口以实现元素的比较;第二种不强制性的要求容器中的元素必须可比较,但是要求传入第二个参数,参数是Comparator接口的子类型(需要重写compare方法实现元素的比较),相当于一个临时定义的排序规则,其实就是通过接口注入比较元素大小的算法,也是对回调模式的应用(Java中对函数式编程的支持)。
例子1:

<span class="hljs-function"&gt;<span class="hljs-keyword"&gt;public <span class="hljs-title"&gt;Student<span class="hljs-params"&gt;(String name,<span class="hljs-keyword"&gt;int age) { <span class="hljs-keyword"&gt;this.name = name; <span class="hljs-keyword"&gt;this.age = age; } <span class="hljs-meta"&gt;@Override <span class="hljs-function"&gt;<span class="hljs-keyword"&gt;public String <span class="hljs-title"&gt;toString<span class="hljs-params"&gt;() { <span class="hljs-keyword"&gt;return <span class="hljs-string"&gt;"Student [name=" + name + <span class="hljs-string"&gt;",age=" + age + <span class="hljs-string"&gt;"]"; } <span class="hljs-meta"&gt;@Override <span class="hljs-function"&gt;<span class="hljs-keyword"&gt;public <span class="hljs-keyword"&gt;int <span class="hljs-title"&gt;compareTo<span class="hljs-params"&gt;(Student o) { <span class="hljs-keyword"&gt;return <span class="hljs-keyword"&gt;this.age - o.age; <span class="hljs-comment"&gt;// 比较年龄(年龄的升序) }

}

<span class="cke_reset cke_widget_drag_handler_container"><img class="cke_reset cke_widget_drag_handler" title="点击并拖拽以移动" src="data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==" alt="" width="15" height="15" data-cke-widget-drag-handler="1">

<span class="hljs-function"&gt;<span class="hljs-keyword"&gt;public <span class="hljs-keyword"&gt;static <span class="hljs-keyword"&gt;void <span class="hljs-title"&gt;main<span class="hljs-params"&gt;(String[] args) {
    Set<Student> set = <span class="hljs-keyword"&gt;new TreeSet<>();     <span class="hljs-comment"&gt;// Java 7的钻石语法(构造器后面的尖括号中不需要写类型)
    set.add(<span class="hljs-keyword"&gt;new Student(<span class="hljs-string"&gt;"Hao LUO",<span class="hljs-number"&gt;33));
    set.add(<span class="hljs-keyword"&gt;new Student(<span class="hljs-string"&gt;"XJ WANG",<span class="hljs-number"&gt;32));
    set.add(<span class="hljs-keyword"&gt;new Student(<span class="hljs-string"&gt;"Bruce LEE",<span class="hljs-number"&gt;60));
    set.add(<span class="hljs-keyword"&gt;new Student(<span class="hljs-string"&gt;"Bob YANG",<span class="hljs-number"&gt;22));

    <span class="hljs-keyword"&gt;for(Student stu : set) {
        System.out.println(stu);
    }

(编辑:好传媒网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读