【IDEA的java源码文件左边有一个红色的J】教程文章相关的互联网学习教程文章

Java源码分析之ArrayList、LinkedList、Vector

ArrayList jdk 7情况下ArrayList list = new ArrayList();//底层创建了长度是10的Object[]数组elementDatalist.add(123);//elementData[0] = new Integer(123);...list.add(11);//如果此次的添加导致底层elementData数组容量不够,则扩容。默认情况下,扩容为原来的容量的1.5倍,同时需要将原有数组中的数据复制到新的数组中。 结论:建议开发中使用带参的构造器:ArrayList list = new ArrayList(int capacity),因为频繁的扩容很...

Java源码----Map【图】

一个key-value的映射的对象,一个map不能包含重复的key,每个key至少映射一个value。Map接口代替字典类,字典类是一个抽象类而不是一个接口。 Mapt提供三个视图集合,key set,value set,key-value的set,map的顺序根据map 视图的iterators视图。一些mao的实现,比如treeset,保证明确的顺序,一些不保证,比如hashmap 注意:   所有的一般目的的map实现类都提供两个标准的构造器,无参构造器创建一个空的map,一个...

java源码 -- AbstractSet【代码】

AbstractSet抽象类属于Set集合分支的顶层类,它继承了AbstractCollection,实现了Set接口。public abstract class AbstractSet<E> extends AbstractCollection<E> implements Set<E> 这个抽象类中没有定义抽象方法,有且只有3个方法(实现其父类的)。分别为equals、hashCode、removeAll。 1.删除指定集合的所有元素 public boolean removeAll(Collection<?> c) {Objects.requireNonNull(c);boolean modified = false;if (size() ...

Java源码----String【图】

1.1 Java对连接操作(+)和其他对象转换成string提供了特殊的支持。连接操作通过StringBuilder或者StringBuffer的append()方法。通过toString()方法实现转换操作。1.2 在string构造器里面放一个null,会导致空指针异常。1.3 构造器1. public String() { this.value = "".value; } 2. public String(String original) { this.value = original.value; this.hash = original.hash; } 3. public String(char value[]) { this.val...

java源码解读--queue【代码】

queue接口特点:可以模拟队列行为,即“先进先出”。 接口结构queue接口继承了Collection接口,并增加了一些新方法 12345678910111213141516public interface <E> extends Collection<E>{ boolean add(E e); //将元素插入队列,如果失败返回false boolean offer(E e); //移除并返回队列中的第一个元素,队列为空时,抛异常 E remove(); //移除并返回队列中的第一个元素,队列为空时,返回null E poll(); //返回队列中...

RxJava源码解析【代码】

原文链接:https://blog.csdn.net/sted_zxz/article/details/82317400转自:https://blog.csdn.net/sted_zxz/article/details/82317400 本文基于RxJava2.2.1版本分析。 简介 官方介绍: RxJava is a Java VM implementation of Reactive Extensions: a library for composing asynchronous and event-based programs by using observable sequences. It extends the observer pattern to support sequences of data/events and ad...

JAVA源码学习-LinkedList【代码】

原文链接:https://my.oschina.net/u/2610176/blog/605859很多公司的面试题都会问到ArrayList和LinkedList的区别,在这里我先稍微做下总结。他们都是List的实现类,实现方式上ArrayList是用数组,LinkedList是用双向链表,性能上ArrayList随机访问效率高,但插入和删除效率低,而LinkedList随机访问效率低,但插入和删除效率高,这样的性能又决定了他们的使用场景不同。那么是什么导致这哥俩性能那么互补呢?希望这篇对LinkedList的...

JAVA源码学习-ArrayList【代码】

原文链接:https://my.oschina.net/u/2610176/blog/600950ArrayList其实是支持增加,删除,修改,查询元素的数组,提供一些为我们熟知的方法去使用,例如add,remove,get等,她是动态的,可以自由扩展容量,是一种比较常用的数据结构,为什么常用,因为她方便。 简单概括了ArrayList特点之后,正式开启源码解读之旅 (最前面有一大坨英文,有时间再慢慢翻译,如果觉得有必要的话~) 首先看ArrayList的继承关系和声明她继承于Abstr...

IDEA的java源码文件左边有一个红色的J【图】

解决办法: 如果源码文件这里已经有一个路径,那就添加现在的.java文件所在目录,或者删除了再重新添加

面试常见算法合集[java源码+持续更新中...]【代码】

一、引子 本文搜集从各种资源上搜集高频面试算法,慢慢填充...每个算法都亲测可运行,并给出简单说明。show you the code! 二、常见算法 2.1.判断单向链表是否有环 1 package study.algorithm.interview;2 3 /**4 * 判断单向链表是否有环? <p>Q1:判断是否有环? isCycle </> <p>Q2:环长? count </> <p>Q3: 相遇点? p1.data </> <p>Q4:入环点? 头结点到入环点距离为D,入环点到相遇点距离为S1,相遇点再次回到入环点距离为S2....

Java源码之Arrays【代码】

简介 Arrays主要是对数组类型操作。包括排序、查找元素、比较、复制、转化为List、获取hashCode、toString方法。排序 -sort 1.排序后为升序 2.数组元素类型为基本类型,可以调用对应的重载方法排序 3.若数组元素类型为对象,在如下情况可以调用sort方法排序 (1) 该类实现了 Comparable接口 (2) 实现比较器接口Comparator Java 中 Comparable 和 Comparator 比较' rel='nofollow' target='_blank'>—>Java 中 Comparable 和 Compara...

深入Java源码剖析之字符串常量【代码】【图】

字符串在Java生产开发中的使用频率是非常高的,可见,字符串对于我们而言非常关键。那么从C语言过来的同学会发现,在C中是没有String类型的,那么C语言要想实现字符串就必须使用char数组,通过一个个的字符来组拼成字符串。 Java中是如何实现字符串的 那其实在Java中,关于字符串的实现,其实用的也是char数组,这可以从源码中得到体现。 /*** Initializes a newly created {@code String} object so that it represents* the same...

【数据结构】8.java源码关于HashMap【代码】【图】

1.hashmap的底层数据结构 众所皆知map的底层结构是类似邻接表的结构,但是进入1.8之后,链表模式再一定情况下又会转换为红黑树在JDK8中,当链表长度达到8,并且hash桶容量超过64(MIN_TREEIFY_CAPACITY),会转化成红黑树,以提升它的查询、插入效率底层哈希桶的数据结构是数组,所以也会涉及到扩容的问题。当MyHashMap的容量达到threshold域值时,就会触发扩容。扩容前后,哈希桶的长度一定会是2的次方。 1.1 为什么用红黑树 那么为...

Android Studio 3.5测试版加载SDK java源码【图】

参考博客:http://blog.sina.com.cn/s/blog_c3eb50230102wt1g.html 1.下载adnroid-28的源码 在Android Studio中加载不到源码的下载链接,所在在Android Studio中下载不到源码。所以,需要借助 android-sdk_r24.4.1-windows.zip 下载源码,这个zip的下载链接  https://dl.google.com/android/android-sdk_r24.4.1-windows.zip?utm_source=androiddevtools&utm_medium=website 也可以直接进入https://www.androiddevtools.cn/点击 ...

建议将Java源码从1.4.2升级到1.6.0_10? (跳过1.5)

我们在工作中仅使用桌面的产品到目前为止一直使用JDK 1.4.2(产品附带1.4.2 JRE).我试图说服管理层让我们升级到更新版本,以获得性能,API /功能和开发人员的舒适性优势. 由于1.5已达到EOL过渡,我正在考虑直接升级到1.6.0_10(选择更新10,因为它是一个主要的).在代码方面,所有编译错误都只是名为enum的变量名,我已经重命名并且产品工作正常. 问题是 >是否推荐升级/罚款,即跳过1.5?有没有捕获>如果是,那么我应该升级到1.6u10还是最新的...