README.md 2.5 KB
Newer Older
R
renfufei 已提交
1 2
# 数据结构与集合

R
部分  
renfufei 已提交
3
数据结构与算法是编程人员必须掌握的技能。
R
renfufei 已提交
4

R
renfufei 已提交
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
开发人员核心技能领域大杂烩:
编程语言: Java: Spring、JavaWeb、JDBC/ORM。
数据库: MySQL
缓存: Redis, Guava/Caffeine
Web: Nginx, Tomcat,
操作系统: Linux、Shell
性能: CDN、高防、
MQ: Kafka, RabbitMQ, RocketMQ
RPC: Rest/Dubbo/Cloud
云平台: Docker, Kubernetes
前端: HTML、HTTP、JS、CSS、新框架、NodeJS
编程工具: Idea/Eclipse/VSCode/Git、Xcode
测试工具: Chrome/Postman/Mock/JUnit/自动化测试/压测
文档工具: Office、PowerDesigner、

R
renfufei 已提交
20 21
## 对象与封装

R
部分  
renfufei 已提交
22 23 24 25 26 27 28 29 30 31 32 33
一个对象,可以认为是一组数据。 例如:

```json
{
  "id": "tiemao",
  "name" : "铁锚",
  "url" : "https://renfufei.blog.csdn.net/"
}
```

当然,在面向对象程序设计时,一般将数据与对应的操作封装在一起,以保证“区域自治”,最终各种对象就能有序地结合在一起。

R
renfufei 已提交
34 35 36

## 数组

R
部分  
renfufei 已提交
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
数组是最简单也最常见的数据结构。

例如以下代码返回一个简单的 int 数组:

```java
public static int[] demoArray(int len) {
    int[] demoArray = new int[len];
    for (int i = 0; i < demoArray.length; i++) {
        demoArray[i] = i * 11;
    }
    System.out.println(demoArray); // [I@1d057a39
    System.out.println(demoArray.getClass()); // class [I
    return demoArray;
}
```

从中可以发现, 数组是一种特殊的对象类型。 `[I` 就是 `int[]` 对应的类名称。

如果元素类型换一个呢?

```java
public static Integer[] demoIntegerArray(int len) {
    Integer[] demoArray = new Integer[len];
    for (int i = 0; i < demoArray.length; i++) {
        demoArray[i] = i * 11;
    }
    // [Ljava.lang.Integer;@26be92ad
    System.out.println(demoArray);
    // class [Ljava.lang.Integer;
    System.out.println(demoArray.getClass());
    return demoArray;
}
```

虽然 `Object` 是所有对象类型的超类, 但数组类型并不能强转?

```java
private void testCast(Integer[] demoIntegerArray) {
    Object[] objArray = (Object[])demoIntegerArray;
    // class [Ljava.lang.Integer;
    System.out.println(objArray.getClass());
    // [Ljava.lang.Integer;@26be92ad
    System.out.println(objArray);
}
```

R
renfufei 已提交
83 84 85

## List

R
部分  
renfufei 已提交
86 87 88 89 90 91 92 93 94 95 96 97 98
List就是列表,和Array很相似,但封装了一些更容易使用的操作。

```java

```




new ArrayList();
Arrays.asList();
Collections.emptyList();

R
renfufei 已提交
99 100 101 102

## Map


R
部分  
renfufei 已提交
103 104 105 106

红黑树


R
renfufei 已提交
107 108
## Set

R
部分  
renfufei 已提交
109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126
## Optional

## Supplier

## Stream

## Comparator

## Collectors

## CollectionUtils

## StringUtils

## Objects



R
renfufei 已提交
127 128

## Guava