软件开发新手入门五大核心技能之基础编程能力(四)

简介: 教程来源 http://hllft.cn/ 本章详解数组与集合:Java数组强调类型安全与内存管理,Python列表支持动态操作与切片;Java集合框架涵盖ArrayList、LinkedList、HashSet等,Python则提供字典、集合及推导式等灵活工具,对比学习助你掌握批量数据高效管理之道。

第五章 数组与集合 —— 批量数据的管理

5.1 数组的深入理解
Java数组详解

// 数组的声明与初始化
// 方式1:声明并分配空间
int[] numbers = new int[5];      // 默认值0
String[] names = new String[3];  // 默认值null

// 方式2:声明并赋值
int[] scores = {85, 92, 78, 90, 88};

// 方式3:分步
int[] ages;
ages = new int[]{18, 20, 22};

// 数组内存分析
// int[] arr = new int[3];
// 栈内存: arr -> 堆内存地址 0x1000
// 堆内存: 0x1000: [0, 0, 0](初始值)

// 数组遍历
int[] data = {1, 2, 3, 4, 5};

// 传统for循环
for (int i = 0; i < data.length; i++) {
    System.out.println(data[i]);
}

// 增强for循环
for (int num : data) {
    System.out.println(num);
}

// 多维数组
int[][] matrix = {
    {1, 2, 3},
    {4, 5, 6},
    {7, 8, 9}
};

// 不规则数组(锯齿数组)
int[][] jagged = new int[3][];
jagged[0] = new int[2];
jagged[1] = new int[4];
jagged[2] = new int[3];

// 数组常用操作
int[] arr = {5, 2, 8, 1, 9};
Arrays.sort(arr);                    // 排序:[1,2,5,8,9]
int index = Arrays.binarySearch(arr, 5);  // 二分查找:2
int[] copy = Arrays.copyOf(arr, 10);      // 复制并扩展
boolean equal = Arrays.equals(arr, copy); // 比较内容
Arrays.fill(arr, 0);                 // 填充为0

// 数组的局限性
// 1. 长度固定,无法动态扩展
// 2. 只能存储同类型数据
// 3. 插入删除效率低(需要移动元素)

Python列表的灵活性

# Python列表(动态数组)
lst = [1, 2, 3, 4, 5]

# 切片操作(强大功能)
print(lst[1:4])     # [2, 3, 4]
print(lst[:3])      # [1, 2, 3]
print(lst[2:])      # [3, 4, 5]
print(lst[::2])     # [1, 3, 5](步长2)
print(lst[::-1])    # [5, 4, 3, 2, 1](反转)

# 修改元素
lst[2] = 99         # [1, 2, 99, 4, 5]

# 添加元素
lst.append(6)       # 末尾添加
lst.insert(0, 0)    # 指定位置插入
lst.extend([7, 8])  # 扩展多个

# 删除元素
lst.pop()           # 删除末尾,返回被删元素
lst.pop(2)          # 删除索引2
lst.remove(99)      # 删除值为99的第一个元素
del lst[0]          # 删除索引0

# 列表常用操作
numbers = [3, 1, 4, 1, 5, 9, 2]
numbers.sort()              # 原地排序
sorted_numbers = sorted(numbers)  # 返回新列表
numbers.reverse()           # 反转
print(len(numbers))         # 长度
print(max(numbers))         # 最大值
print(min(numbers))         # 最小值
print(sum(numbers))         # 求和

# 列表推导式(高效创建列表)
squares = [x**2 for x in range(10)]
even_squares = [x**2 for x in range(20) if x % 2 == 0]
matrix = [[i*j for j in range(5)] for i in range(5)]

# 列表作为栈和队列
# 栈(后进先出)
stack = []
stack.append(1)
stack.append(2)
stack.pop()          # 2

# 队列(先进先出,使用collections.deque效率高)
from collections import deque
queue = deque([1, 2, 3])
queue.append(4)
queue.popleft()      # 1

5.2 集合框架的高级用法
Java集合框架

import java.util.*;

public class CollectionDemo {
    public static void main(String[] args) {
        // ArrayList(动态数组)
        List<String> arrayList = new ArrayList<>();
        arrayList.add("Apple");
        arrayList.add("Banana");
        arrayList.add(1, "Orange");  // 插入索引1
        String fruit = arrayList.get(0);
        arrayList.remove("Banana");

        // LinkedList(双向链表)
        LinkedList<Integer> linkedList = new LinkedList<>();
        linkedList.addFirst(1);
        linkedList.addLast(3);
        linkedList.add(1, 2);
        int first = linkedList.getFirst();
        int last = linkedList.getLast();

        // HashSet(无序,不重复)
        Set<String> hashSet = new HashSet<>();
        hashSet.add("Java");
        hashSet.add("Python");
        hashSet.add("Java");  // 重复,不会添加
        System.out.println(hashSet.size());  // 2

        // TreeSet(有序,红黑树)
        TreeSet<Integer> treeSet = new TreeSet<>();
        treeSet.add(5);
        treeSet.add(2);
        treeSet.add(8);
        treeSet.add(1);
        System.out.println(treeSet);  // [1, 2, 5, 8]

        // HashMap
        Map<String, Integer> hashMap = new HashMap<>();
        hashMap.put("Alice", 85);
        hashMap.put("Bob", 92);
        hashMap.put("Charlie", 78);

        // 遍历Map
        for (Map.Entry<String, Integer> entry : hashMap.entrySet()) {
            System.out.println(entry.getKey() + ": " + entry.getValue());
        }

        // 获取值(带默认值)
        int score = hashMap.getOrDefault("David", 0);

        // TreeMap(有序Map)
        TreeMap<String, Integer> treeMap = new TreeMap<>();
        treeMap.put("Banana", 3);
        treeMap.put("Apple", 5);
        treeMap.put("Cherry", 2);
        System.out.println(treeMap);  // {Apple=5, Banana=3, Cherry=2}

        // 迭代器(Iterator)
        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
        Iterator<Integer> it = numbers.iterator();
        while (it.hasNext()) {
            int num = it.next();
            if (num % 2 == 0) {
                it.remove();  // 安全删除
            }
        }
    }
}

Python字典与集合

# 字典(dict)- 哈希表实现
person = {
    "name": "Alice",
    "age": 25,
    "city": "New York"
}

# 访问元素
print(person["name"])           # Alice
print(person.get("age"))        # 25
print(person.get("country", "USA"))  # 默认值

# 添加/修改
person["email"] = "alice@example.com"
person["age"] = 26

# 删除
del person["city"]
email = person.pop("email")     # 删除并返回值
last_item = person.popitem()    # 删除并返回最后一项

# 字典遍历
for key in person:
    print(f"{key}: {person[key]}")

for key, value in person.items():
    print(f"{key}: {value}")

for key in person.keys():
    print(key)

for value in person.values():
    print(value)

# 字典推导式
squares_dict = {x: x**2 for x in range(5)}  # {0:0, 1:1, 2:4, 3:9, 4:16}

# 合并字典
dict1 = {"a": 1, "b": 2}
dict2 = {"c": 3, "d": 4}
merged = {**dict1, **dict2}  # Python 3.5+
# 或
merged = dict1 | dict2  # Python 3.9+

# 集合(set)- 无序不重复
numbers = {1, 2, 3, 4, 5}
numbers.add(6)
numbers.remove(3)
numbers.discard(10)  # 不存在也不报错

# 集合运算
A = {1, 2, 3, 4}
B = {3, 4, 5, 6}

print(A | B)   # 并集: {1,2,3,4,5,6}
print(A & B)   # 交集: {3,4}
print(A - B)   # 差集: {1,2}
print(A ^ B)   # 对称差: {1,2,5,6}

# 检查子集/超集
print({1, 2}.issubset(A))   # True
print(A.issuperset({1, 2})) # True

# 集合推导式
even_set = {x for x in range(10) if x % 2 == 0}  # {0,2,4,6,8}

# 去重功能
duplicates = [1, 2, 2, 3, 3, 3, 4]
unique = list(set(duplicates))  # [1,2,3,4]

来源:
http://tmywi.cn/

相关文章
|
8天前
|
人工智能 自然语言处理 文字识别
阿里云百炼Qwen3.7-Max简介:能力、优势、支持订阅计划参考
Qwen3.7-Max是阿里云百炼面向智能体时代推出的新一代旗舰模型,对标GPT-5.5、Claude Opus 4.7等闭源旗舰。该模型支持百万级token上下文窗口,具备顶级推理能力、多模态搜索与视觉理解增强、流式输出低延迟响应等核心优势,覆盖编程、办公、长周期自主执行等复杂场景。同时支持OpenAI接口兼容,便于系统快速迁移。用户可通过Token Plan团队或节省计划等订阅方式灵活调用,适合企业级高要求场景使用。
3613 15
阿里云百炼Qwen3.7-Max简介:能力、优势、支持订阅计划参考
|
16天前
|
人工智能 开发工具 iOS开发
Claude Code 新手完全上手指南:安装、国产模型配置与常用命令全解
Claude Code 是一款运行在终端环境中的 AI 编程助手,能够直接在命令行中完成代码生成、项目分析、文件修改、命令执行、Git 管理等开发全流程工作。它最大的特点是**任务驱动、终端原生、轻量高效、多模型兼容**,无需图形界面、不依赖 IDE 插件,能够深度融入开发者日常工作流。
3595 13
|
10天前
|
人工智能 自然语言处理 供应链
|
12天前
|
人工智能 Linux BI
国内用 Claude Code 终于不用翻墙了:一行命令搞定,自动接 DeepSeek
JeecgBoot AI专题研究 一键脚本:Claude Code + JeecgBoot Skills + DeepSeek 全平台接入 一行命令装好 Claude Code + JeecgBoot Skills + DeepSeek 接入,无需翻墙使用 Claude Code,支持 Wind
2975 7
国内用 Claude Code 终于不用翻墙了:一行命令搞定,自动接 DeepSeek
|
18天前
|
Shell API 开发工具
Claude Code 快速上手指南(新手友好版)
AI编程工具卷疯啦!Claude Code凭借任务驱动+终端原生的特性,成了开发者的效率搭子。本文从安装、登录、切换国产模型到常用命令,手把手带新手快速上手,全程避坑,30分钟独立用起来。
3717 25
|
10天前
|
人工智能 自然语言处理 安全
Claude Code 全攻略:命令大全+三种模式+记忆体系+实战工作流完整手册
Claude Code 是当前最流行的终端级 AI 编程助手,能够直接在命令行中完成代码生成、项目理解、文件修改、命令执行、错误修复等全流程开发工作。它不依赖图形界面、不占用额外资源,却能深度理解项目结构,自动生成规范代码,大幅提升研发效率。
1455 3
|
3天前
|
存储 定位技术 数据库
CodeGraph 如何让 Claude Code减少 7 成工具调用?
CodeGraph 为 Coding Agent 提供本地代码知识图谱,把函数、类、调用链和框架路由提前整理成“项目地图”,减少盲目搜索和文件读取。它不是新 Agent,而是上下文基础设施,让 Agent 更快找到正确代码路径,平均减少 7 成工具调用。
476 0
|
17天前
|
存储 Linux iOS开发
【2026最新】MarkText中文版Markdown编辑器使用图解(附安装包)
MarkText是一款免费开源、跨平台的Markdown编辑器,主打所见即所得实时预览,支持Windows/macOS/Linux。内置数学公式、流程图、代码高亮、多主题及PDF/HTML导出,是Typora的轻量免费替代首选。(239字)