JavaLang

数据存储容器

  • 数组
    内存地址连续;通过下标访问,查询效率高;增删消耗性能,通过创建新的数组实现增删
  • 链表
    链表内存地址不连续,查询效率低,增删效率高
    单向链表
            节点由2部分组成,当前节点信息与下一节点地址指针,只能从前往后查,不能回查
    双向链表
            节点由3部分组成,前一节点地址指针、当前节点信息、下一节点地址指针,可双向查询

  • 二叉树
    节点左子树小于该节点,节点右子树大于该节点,左右子树也是二叉查找树,殊勋配列
    不平衡二叉树、平衡二叉树、红黑树

集合

  • ArrayList
    默认数组长度10,支持动态扩容。size >> 1
  • LinkedList
    通过双向链表实现,push(e)头部添加,add(e)尾部添加,get(index)判断从头或尾遍历
  • Vector
    与ArrayList类似,以动态数组存储数据;区别是Vector的add、get等方法线程安全,有同步关键字
  • HashSet
    本质是一个HashMap,HashSet元素值是HashMap的Key,value是new Object()
  • TreeSet
    本质是NavigableMap,数据保存在TreeMap,key是元素值,value是new Object()
    TreeSet是有序的,因为 TreeMap implements NavigableMap extends SortMap
  • TreeMap
    本质是红黑树。全局变量comparator比较器,有一个Entry(key, value)内部类
    一个Entry包含当前节点的K-V,左子节点、右子节点、父节点、节点颜色
  • HashMap
    jdk1.7及之前用数组+链表,jdk1.8之后采用数组+链表、数组+红黑树;链表长度大于8,装红黑树
    链表转红黑树的临界值是8,红黑树转链表的临界值是6

泛型

  • 无边界通配符
<?> 通用的类型
  • 上边界通配符
<? extends Number> 表示Number及子孙类对象可使用
  • 下边界通配符
<? super Number> 表示Number及其父类、超类所有对象可使用

反射

在java程序运行状态中,对于一个给定的Class对象,获得其属性和方法;给定一个对象都能调用它的任意一个属性和方法。私有属性调用时要强制访问
这种动态获取类内容及动态调用对象方法获取属性的机制叫做反射

注解

元数据,一种代码级别的说明
注解其实是一个接口,继承了java.lang.annotation.Annotation接口
元注解

  • @Target
    描述注解作用的位置。
类型作用范围
ElementType.TYPE
ElementType.METHOD方法
ElementType.FIELD成员变量
  • @Retention
    描述注解被保留的阶段
    source < class < runtime
  • @Documented
    是否被抽取到JavaDoc api中
  • @Inherited
    是否可被子类继承
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值