java基础之集合框架–Collection及Map顶级接口
最近看了百度的面试题,面试内容基本都是基础知识,好多问题没有答好,所以定个小目标,在年前争取把java主流的基础知识都巩固一遍;那就以使用最频繁的集合框架开始。
Collection及Map类图
collection类图
可以看出来,Collection下的子接口有三个分别为Set,List,Queue,其中Set为无序的且不可重复的集合,List为有序可重复的集合,queue为先入先出的队列。
Map类图
collection接口主要包含的方法如下:add()、addAll()、contain()、remove()、hashCode()、size()、toArray()等方法
关于Collection接口方面百度的技术面试主要问题:
Collection有哪些子类或者子接口(上面图即是常用的);
问:接口可以定义常量么?
答:接口肯定是可以定义常量的,并且只能定义常量,但是其实接口中定义公有常量是不推荐的,除非这个常量与这个接口及其实现的子类有非常密切的关系,如integer的最大值等;effectiveJava一书中也明确表示不建议定义常量接口,实现常量接口会把实现细节暴露到导出的API中,并会对实现此接口的配置类造成污染。
还有一些特别基础的问题如:抽象类与接口的区别;为什么要用接口;为什么是单继承等;
还有一个面试题说的是==与equals的区别(String a=”s”),这个其实很重要,对下面介绍set、map等结构有非常重要的作用;下面就解析下这道题。
equals与==区别
介绍之前,先说明下,java的类型包括两类,一个为基础数据类型,一个为引用类型;在没有重写equals的方法情况下,equals与==比较结果相同,都是对引用地址的比较;基础数据类型都重写了equals方法,拿string类来说,它重写了object的equals方法