基础问题小计

包含容易忘记或者混淆的概念性知识点。

StringBuffer 和 StringBuilder 类的区别是什么

StringBuilder不是线程安全的,但是运行速度,所以推荐使用StringBuilder

抽象类、接口

抽象类,说白了和普通类只有一个区别:不能实例化。

接口,只是定义抽象方法,没有构造方法,支持多继承;成员变量只能是:public static final类型的。接口是 隐式抽象 的。方法全部都是公有的。

一个类只能 继承 一个抽象类,但可以 实现 多个接口。

集合

ArrayList 数组

增加add,删除remove,修改set,查询get

排序

  • 升序:arrayList.sort(Comparator.naturalOrder())
  • 降序:arrayList.sort(Comparator.reverseOrder())

LinkedList 链表

逐一添加 add,添加头addFrist,移除头removeFirst,移除尾removeLast,获取头getFirst,获取尾getLast

  • 实现了 Queue 接口,可作为队列使用
  • 实现了 Deque 接口,可作为队列使用
  • 实现了 List 接口,可进行列表的相关操作
  • 实现了 Cloneable 接口,可实现克隆
  • 实现了 java.io.Serializable 接口,即可支持序列化,能通过序列化去传输

HashSet

  • 基于 HashMap
  • 不允许重复元素的集合
  • 允许 null
  • 无序
  • 非线程安全

添加add,判断存在contains,删除remove,清空clear

HashMap

  • 散列表,Key-Value 映射,可以不同类型,可以泛型指定。
  • 无序

添加put,获取get,删除remove

迭代

  • 只获取 key : KeySet()
  • 只获取 value : values()