Skip to content

Commit de649c2

Browse files
author
jackchan1999
committed
updates
1 parent 9ddf0c3 commit de649c2

23 files changed

+1518
-1275
lines changed

Node/node.md

+22
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,25 @@
1+
## 集合框架
2+
3+
set集合
4+
5+
map
6+
7+
元素是Entry< k, v >,Entry就是将key和value捆绑在一起
8+
9+
当一个set的元素是Entry的时候,该set就是一个map
10+
11+
hash()算法可以快速的计算出存、取的地址,存和取元素的效率很高,但是hash算法不能表示出元素之间的关系。hash算法决定了集合是无序的。
12+
13+
数组+链表,bucket桶结构,hash冲突
14+
15+
HashSet底层实现是HashMap
16+
17+
TreeMap
18+
19+
红黑树,平衡二叉树,排序二叉树(二叉查找树,左小右大,中序有序),有序,自然排序compareTo()方法,比较器排序Comparator接口
20+
21+
Entry< key, value >
22+
123
## 断言assert
224

325
## IO流

README.md

+10-2
Original file line numberDiff line numberDiff line change
@@ -86,15 +86,23 @@
8686
* [Java并发工具包concurrent用户指南](https://alleniverson.gitbooks.io/java-basic-introduction/content/第5章%20多线程/Java并发工具包concurrent用户指南.html)
8787
* [多线程问题总结](第5章 多线程/多线程问题总结.md)
8888
* [第6章 集合框架](https://alleniverson.gitbooks.io/java-basic-introduction/content/第6章%20集合框架/README.html)
89-
* [集合框架](https://alleniverson.gitbooks.io/java-basic-introduction/content/第6章%20集合框架/集合框架.html)
90-
* [集合框架工具类](https://alleniverson.gitbooks.io/java-basic-introduction/content/第6章%20集合框架/集合框架工具类.html)
89+
* [Collection接口](https://alleniverson.gitbooks.io/java-basic-introduction/content/第6章%20集合框架/Collection接口.html)
90+
* [List接口](https://alleniverson.gitbooks.io/java-basic-introduction/content/第6章%20集合框架/List接口.html)
91+
* [Set接口](https://alleniverson.gitbooks.io/java-basic-introduction/content/第6章%20集合框架/Set接口.html)
92+
* [Queue接口](https://alleniverson.gitbooks.io/java-basic-introduction/content/第6章%20集合框架/Queue接口.html)
93+
* [集合的遍历](https://alleniverson.gitbooks.io/java-basic-introduction/content/第6章%20集合框架/集合的遍历.html)
94+
* [集合工具类](https://alleniverson.gitbooks.io/java-basic-introduction/content/第6章%20集合框架/集合工具类.html)
95+
* [Map接口](https://alleniverson.gitbooks.io/java-basic-introduction/content/第6章%20集合框架/Map接口.html)
96+
* [Predicate和Stream操作集合](https://alleniverson.gitbooks.io/java-basic-introduction/content/第6章%20集合框架/Predicate和Stream操作集合.html)
97+
* [集合框架的综合应用](https://alleniverson.gitbooks.io/java-basic-introduction/content/第6章%20集合框架/集合框架的综合应用.html)
9198
* [Java集合类型详解](https://alleniverson.gitbooks.io/java-basic-introduction/content/第6章%20集合框架/Java集合类型详解.html)
9299
* [第7章 IO流](https://alleniverson.gitbooks.io/java-basic-introduction/content/第7章%20IO流/README.html)
93100
* [IO流之File类](https://alleniverson.gitbooks.io/java-basic-introduction/content/第7章%20IO流/IO流之File类.html)
94101
* [IO流之字节流](https://alleniverson.gitbooks.io/java-basic-introduction/content/第7章%20IO流/IO流之字节流.html)
95102
* [IO流之字符流](https://alleniverson.gitbooks.io/java-basic-introduction/content/第7章%20IO流/IO流之字符流.html)
96103
* [常用IO流](https://alleniverson.gitbooks.io/java-basic-introduction/content/第7章%20IO流/常用IO流.html)
97104
* [NIO](https://alleniverson.gitbooks.io/java-basic-introduction/content/第7章%20IO流/NIO.html)
105+
* [NIO工具类](https://alleniverson.gitbooks.io/java-basic-introduction/content/第7章%20IO流/NIO工具类.html)
98106
* [AIO](https://alleniverson.gitbooks.io/java-basic-introduction/content/第7章%20IO流/AIO.html)
99107
* [NIO和AIO](https://alleniverson.gitbooks.io/java-basic-introduction/content/第7章%20IO流/NIO和AIO.html)
100108
* [序列化流](第7章 IO流/序列化流.md)

SUMMARY.md

+10-2
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,15 @@
7676
----
7777

7878
* [第6章 集合框架](第6章 集合框架/README.md)
79-
* [集合框架](第6章 集合框架/集合框架.md)
80-
* [集合框架工具类](第6章 集合框架/集合框架工具类.md)
79+
* [Collection接口](第6章 集合框架/Collection接口.md)
80+
* [List接口](第6章 集合框架/List接口.md)
81+
* [Set接口](第6章 集合框架/Set接口.md)
82+
* [Queue接口](第6章 集合框架/Queue接口.md)
83+
* [集合的遍历](第6章 集合框架/集合的遍历.md)
84+
* [集合工具类](第6章 集合框架/集合工具类.md)
85+
* [Map接口](第6章 集合框架/Map接口.md)
86+
* [Predicate和Stream操作集合](第6章 集合框架/Predicate和Stream操作集合.md)
87+
* [集合框架的综合应用](第6章 集合框架/集合框架的综合应用.md)
8188
* [Java集合类型详解](第6章 集合框架/Java集合类型详解.md)
8289

8390
----
@@ -88,6 +95,7 @@
8895
* [IO流之字符流](第7章 IO流/IO流之字符流.md)
8996
* [常用IO流](第7章 IO流/常用IO流.md)
9097
* [NIO](第7章 IO流/NIO.md)
98+
* [NIO工具类](第7章 IO流/NIO工具类.md)
9199
* [AIO](第7章 IO流/AIO.md)
92100
* [NIO和AIO](第7章 IO流/NIO和AIO.md)
93101
* [序列化流](第7章 IO流/序列化流.md)

第11章 新特性/Lambda表达式.md

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
## Lambda表达式
2+
3+
将代码块作为函数参数,函数式接口,相对于一个匿名方法,主要作用是代替匿名内部类的烦琐语法。
4+
5+
Lambda表达式有三部分组成
6+
7+
- 参数列表
8+
- 箭头(->)
9+
- 代码块
10+
11+
## 函数式接口
12+
13+
只包含一个抽象方法的接口,可以包含多个默认方法,类方法
14+
15+
Lambda表达式的结果就是被当成对象。
16+
Binary file not shown.
+72
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
## 1. Java类中集合的关系图
2+
3+
![](http://img.blog.csdn.net/20161003151458688)
4+
5+
![](http://img.blog.csdn.net/20161003144341239)
6+
7+
## 2. 集合类概述
8+
9+
在程序中可以通过数组来保存多个对象,但在某些情况下开发人员无法预先确定需要保存对象的个数,此时数组将不再适用,因为数组的长度不可变。例如,要保存一个学校的学生信息,由于不停有新生来报道,同时也有学生毕业离开学校,这时学生的数目就很难确定。为了在程序中可以保存这些数目不确定的对象,JDK中提供了一系列特殊的类,这些类可以存储任意类型的对象,并且长度可变,在Java中这些类被统称为集合。集合类都位于java.util包中,在使用时一定要注意导包的问题,否则会出现异常。
10+
11+
### 2.1 为什么出现集合类?
12+
13+
面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,Java就提供了集合类。
14+
15+
### 2.2 数组和集合类同是容器,有何不同?
16+
17+
![](http://img.blog.csdn.net/20161014230130495)
18+
19+
### 2.3 集合类的特点
20+
21+
集合只用于存储对象,集合长度是可变的,集合可以存储不同类型的对象。
22+
23+
## 3. Collection接口概述
24+
25+
Collection:单列集合类的根接口,用于存储一系列符合某种规则的元素,它有两个重要的子接口,分别是List和Set。其中,List的特点是元素有序、元素可重复。Set的特点是元素无序,而且不可重复。List接口的主要实现类有ArrayList和LinkedList,Set接口的主要实现类有HashSet和TreeSet。
26+
27+
Collection 层次结构中的根接口。Collection 表示一组对象,这些对象也称为 collection 的元素。一些 collection 允许有重复的元素,而另一些则不允许。一些 collection 是有序的,而另一些则是无序的。
28+
29+
![](http://img.blog.csdn.net/20150827220241133)
30+
31+
## 4. Collection接口成员方法
32+
33+
集合层次结构中的根接口。Collection表示一组对象,这些对象也称为Collection的元素。一些Collection允许有重复的元素,而另一些则不允许。一些Collection是有序的,而另一些则是无序的。
34+
35+
### 添加功能
36+
37+
| 方法声明 | 功能描述 |
38+
| :------- | :-------- |
39+
| add() | 添加元素 |
40+
| addAll() | 添加一个集合的元素 |
41+
42+
### 删除功能
43+
44+
| 方法声明 | 功能描述 |
45+
| ----------- | --------- |
46+
| remove() | 删除元素 |
47+
| removeAll() | 删除一个集合的元素 |
48+
| clear() | 清空集合 |
49+
50+
### 判断功能
51+
52+
| 方法声明 | 功能描述 |
53+
| ------------- | ----------------- |
54+
| contains() | 判断集合是否包含指定的元素 |
55+
| containsAll() | 判断一个集合是否包含一个集合的元素 |
56+
| isEmpty() | 判断集合是否为空 |
57+
58+
### 获取功能
59+
60+
| 方法声明 | 功能描述 |
61+
| ----------- | -------- |
62+
| size() | 获取集合的长度 |
63+
| retainAll() | 取两个集合的交集 |
64+
65+
### 其他功能
66+
67+
| 方法声明 | 功能描述 |
68+
| ---------- | ----------------- |
69+
| toArray() | 把集合转成数组,可以实现集合的遍历 |
70+
| iterator() | 迭代器,集合的专用遍历方式 |
71+
72+
![](http://img.blog.csdn.net/20150812153133037)

第6章 集合框架/List接口.md

+95
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
## List接口概述
2+
3+
有序的 collection(也称为序列/线性表)。此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。与 set 不同,列表通常允许重复的元素。
4+
5+
List接口是Collection接口的一个子接口,List集合的特性是:有序,可重复,元素有索引,List接口有三个实现类
6+
7+
- ArrayList:底层数据结构是数组,查询快,增删慢,非线程安全,效率高,数据增长为原来的50%
8+
- Vector:底层数据结构是数组,查询快,增删慢,线程安全,效率低,数据增长为原来的一倍
9+
- LinkedList:底层数据结构是链表,查询慢,增删快,非线程安全,效率高
10+
11+
12+
## Vector
13+
14+
底层数据结构是数组,查询快,增删慢,线程安全,效率低。
15+
16+
Vector类特有功能
17+
18+
- public void addElement(E obj):添加元素
19+
- public E elementAt(int index):根据索引获取元素
20+
- public Enumeration elements():获取所有的元素
21+
22+
## ArrayList
23+
24+
底层数据结构是数组,查询快,增删慢,线程不安全,效率高。
25+
26+
## LinkedList
27+
28+
与ArrayList基于数组结构不同的是,LinkedList是基于链表的结构,因此具有链表特有的功能
29+
30+
| 方法声明 | 功能描述 |
31+
| :------------ | :------------ |
32+
| addFirst() | 在集合的第0个位置添加元素 |
33+
| addLast() | 在集合的最后位置添加元素 |
34+
| getFirst() | 获取集合的第0个元素 |
35+
| getLast() | 获取集合的最后一个元素 |
36+
| removeFirst() | 删除集合的第0个元素 |
37+
| removeLast() | 删除集合的最后一个元素 |
38+
39+
代码示例:使用LinkedList来模拟一个栈数据结构
40+
41+
```java
42+
package cn.itcast;
43+
44+
import java.util.LinkedList;
45+
46+
/*
47+
*使用LinkedList模拟栈数据结构的集合,并测试
48+
*1、栈的特点先进后出
49+
*2、 LinkedList的特有添加功能addFirst()
50+
*/
51+
class MyStack {
52+
private LinkedList link;
53+
54+
public MyStack() {
55+
link = new LinkedList();
56+
}
57+
58+
public void add(Object obj) {
59+
// 将指定元素插入此列表的开头
60+
link.addFirst(obj);
61+
}
62+
63+
public Object get() {
64+
// 移除并返回此列表的第一个元素。
65+
// return link.getFirst();
66+
return link.removeFirst();
67+
}
68+
69+
public boolean isEmpty() {
70+
return link.isEmpty();
71+
}
72+
}
73+
74+
/*
75+
* MyStack的测试
76+
*/
77+
public class MyStackDemo {
78+
public static void main(String[] args) {
79+
// 创建集合对象
80+
MyStack ms = new MyStack();
81+
// 添加元素
82+
ms.add("hello");
83+
ms.add("world");
84+
ms.add("java");
85+
ms.add("android");
86+
ms.add("javase");
87+
while (!ms.isEmpty()) {
88+
System.out.println(ms.get());
89+
}
90+
}
91+
}
92+
```
93+
运行结果:
94+
95+
![](http://img.blog.csdn.net/20150810204449423)

第6章 集合框架/List集合.md

-8
This file was deleted.

0 commit comments

Comments
 (0)