数据结构与算法是编程人员必须掌握的技能。
开发人员核心技能领域大杂烩: 编程语言: 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就是列表,和Array很相似,但封装了一些更容易使用的操作。
new ArrayList(); Arrays.asList(); Collections.emptyList();
红黑树