java从入门到放弃
鱼机
这个作者很懒,什么都没留下…
展开
-
Java从入门到放弃(一)String类
1、不可变的String类public final class String implements java.io.Serializable, Comparable<String>, CharSequence { private final char[] value; private int hash; public String(String origi...原创 2018-03-16 00:04:45 · 224 阅读 · 0 评论 -
Java从入门到放弃(十六)定时器Timer
Timer是java自带的定时器,可以做一些简单的定时任务。创建对象 Timer timer = new Timer(); //定义定时器的名字 Timer timer1 = new Timer("定时器1"); //第一个参数:定时器名字,第二参数设置是否是守护线程 Timer timer2 = new...原创 2018-06-10 16:23:33 · 977 阅读 · 0 评论 -
Java从入门到放弃(十五)集合框架之LinkedHashMap源码
LinkedHashMap是一个有序的HashMap,各个节点以双向链表的形式链接着,结构如图所示: LinkedHashMap的真实结构不会死这样子的,因为长度原因截图部分。节点里的数字标识实际上是没有的,是为了表示插入的顺序(如果是jdk1.7图会有不同,因为1.8之前hashmap是头插入,1.8之后是尾插入)。每一个节点就是一个内部类Entry对象,这个结构图和HashMap的结构图基本...原创 2018-05-21 18:32:55 · 176 阅读 · 0 评论 -
Java从入门到放弃(十三)集合框架之HashSet源码
HashSet是Set集合的一种,Set集合是一种不允许出现重复值的集合,可以用来作为去重。1、构造函数 private transient HashMap<E,Object> map; //内部的一个HashMap数据成员 private static final Object PRESENT = new Object(); ...原创 2018-05-07 23:39:12 · 158 阅读 · 0 评论 -
Java从入门到放弃(十四)集合框架之TreeMap源码
我们经常需要对一些集合按照指定的规则进行排序,比如学生按照学号排序,或者按照成绩排序,集合里面有专门排序的集合,如TreeMap。TreeMap里面是使用的红黑树结构。构造方法 private final Comparator<? super K> comparator; private transient Entry<K,V> root; ...原创 2018-05-20 12:45:37 · 199 阅读 · 0 评论 -
Java从入门到放弃(十)集合框架之HashMap源码(1)
HashMap是使用最最多的Java集合框架之一,在面试中如果问基础肯定是要问集合框架的,要问集合框架那HashMap是一定少不了的。所以准备深入理解一下内部的实现。 看源码之前先了解一下HashMap的底层数据结构,它是一个数组加链表的结构 HashMap把每一个键值对包装成一个Node对象(Node是一个内部类),如图所示HashMap是一个数组加链表的结...原创 2018-04-29 09:14:03 · 244 阅读 · 0 评论 -
Java从入门到放弃(十二)集合框架之HashMap源码(3)
1、romove方法 public V remove(Object key) { Node<K,V> e; return (e = removeNode(hash(key), key, null, false, true)) == null ?null : e.value; //调用removeNode方法,返回调用方法的值 } final ...原创 2018-05-05 23:12:35 · 128 阅读 · 0 评论 -
Java从入门到放弃(十一)集合框架之HashMap源码(2)
1、put方法 public V put(K key, V value) { return putVal(hash(key), key, value, false, true); } //hash就是key的hash值,根据这个hash得出数据存放再数组中的位置,onlyIfAbsent为true时,不存在key才会执行put操作。 final...原创 2018-05-02 07:57:47 · 176 阅读 · 0 评论 -
Java从入门到放弃(七)集合框架之ArrayList的坑
1、快速失败和安全失败 1)、快速失败 在用迭代器遍历一个集合对象时,如果遍历过程中对集合对象的内容进行了修改(增加、删除、修改),则会抛出ConcurrentModificationException。如下: List<Integer> list = new ArrayList<>(); for(int i = 0;i &...原创 2018-04-06 21:24:06 · 514 阅读 · 0 评论 -
Java从入门到放弃(六)集合框架之ArrayList源码(2)
上一篇文章Java从入门到放弃(五)集合框架之ArrayList(1)介绍了ArrayList的构造方法和add方法。对于随机插入,ArrayList是把要插入位置后面的元素全部后移,然后把元素插入到指定位置,如果集合内元素比较多的时候,如1000个元素,你要在5这个位置插入一个元素,就要把5后面的994个元素全部都后移一格,很消耗性能。3、扩容方法private Object[] ...原创 2018-04-03 22:58:40 · 185 阅读 · 0 评论 -
Java从入门到放弃(九)集合框架之LinkedList源码(2)
上一篇Java从入门到放弃(八)集合框架之LinkedList源码(1)介绍了add和remove方法,这篇介绍LinkedList的set,get等方法。1、get方法public E get(int index) { checkElementIndex(index); return node(index).item; }方法很简单,就是一个越界检...原创 2018-04-15 14:46:42 · 170 阅读 · 0 评论 -
Java从入门到放弃(八)集合框架之LinkedList源码(1)
LinkedList是基于双向链表的集合,先看以下代码: List<Integer> list = new LinkedList<>(); for(int i = 1;i < 6;i++){ list.add(i); }代码执行后数据如图所示:结合LinkedList源码: t...原创 2018-04-14 19:15:02 · 297 阅读 · 0 评论 -
Java从入门到放弃(五)集合框架之ArrayList源码(1)
Java集合框架在开发工作和面试中都是会一定一定会遇到的,集合分为两大类Collection和Map,其中Collection分为Set,List,Queue。结构图如下:首先讲解最常用的List集合中的ArrayList,如下代码, List<ClassA> list = new ArrayList<>(); list...原创 2018-04-01 22:48:26 · 285 阅读 · 0 评论 -
Java从入门到放弃(四)Comparable 和Comparator排序
在Java中,要实现对象的排序,可以:实现Comparable或者Comparator接口。两者的区别是用Comparable一定要修改所排序对象的类的源码,而Comparator接口本身是一个比较器,可以通过实现这个接口定义对象的排序,也可以在排序的时候传入所定义的比较器来实现排序。1、Comparable 类 package java.lang;import j...原创 2018-03-31 20:00:37 · 244 阅读 · 0 评论 -
Java从入门到放弃(三)equals和==
1、equals和==的区别 除了基本类型,equals和==比较的都是对象的地址值。如下为Object的equals方法public boolean equals(Object obj) { return (this == obj); } 对于基本数据类型,equals和==比较的都是值,数值相等就相等。 基本数据的包装类型, 包装类都重写了equals...原创 2018-03-26 00:11:10 · 269 阅读 · 0 评论 -
Java从入门到放弃(二)八大基本数据类型和包装类
Java有八大基本数据类型,分为字符型char、布尔型boolean、数值型byte、short、int、long、float、double。1、字符型 字符型char是用单引号括起来的字符,一个字符占两个字节。对应的包装类是Character,可以进行加减乘除运算,也可以比较大小。 char c1 = 'z'; //122 char c2...原创 2018-03-19 23:09:38 · 299 阅读 · 0 评论 -
Java从入门到放弃(十七)求你学学lambda表达式
1、lambda表达式语法Java8的lambda表达式简化了java的匿名类,lambda表达式允许你通过表达式来代替功能接口。 //java8之前创建匿名线程 new Thread(new Runnable() { @Override public void run() { System.ou...原创 2019-04-20 15:58:29 · 218 阅读 · 0 评论