Skip to content

Latest commit

 

History

History
128 lines (84 loc) · 2.49 KB

File metadata and controls

128 lines (84 loc) · 2.49 KB

数据结构与集合

数据结构与算法是编程人员必须掌握的技能。

开发人员核心技能领域大杂烩: 编程语言: 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、

对象与封装

一个对象,可以认为是一组数据。 例如:

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

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

数组

数组是最简单也最常见的数据结构。

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

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[] 对应的类名称。

如果元素类型换一个呢?

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 是所有对象类型的超类, 但数组类型并不能强转?

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);
}

List

List就是列表,和Array很相似,但封装了一些更容易使用的操作。

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

Map

红黑树

Set

Optional

Supplier

Stream

Comparator

Collectors

CollectionUtils

StringUtils

Objects

Guava