Java程序员,一周Python入门:数组,元组,集合,集合,字典

liftword4周前 (04-03)技术文章3

今天来对比学习一下存储的方式。

Java 和 Python 在数据结构方面有很多不同之处,特别是 列表(List)、元组(Tuple)、集合(Set)、字典(Dict/Map) 的使用方式。
Python 原生支持 元组(Tuple),而 Java支持数组且没有内置的 Tuple 类型,通常需要使用第三方库或自定义类来模拟。


1. 元组(Tuple),一种有序列表

特性

Java(无内置 Tuple,需第三方库或自定义)

Python(tuple)

定义方式

new AbstractMap.SimpleEntry<>(key, value)(模拟)

tup = (1, "hello", True)

是否可变

(不可变,需使用 ImmutablePair 等)

(不可变)

是否有序

允许重复元素

索引访问

应用场景

方法返回多个值、键值对存储

方法返回多个值、键值对存储

示例

Java(使用 AbstractMap.SimpleEntry 作为 2 元组)

import java.util.AbstractMap;
import java.util.Map;

public class Main {
    public static void main(String[] args) {
        Map.Entry tuple = new AbstractMap.SimpleEntry<>(1, "hello");
        System.out.println(tuple.getKey());    // 1
        System.out.println(tuple.getValue());  // hello
    }
}

Python

tup = (1, "hello", True)
print(tup[0])  # 1
print(tup[1])  # hello

tup = (1,["a","b"])
tup[1][0] = "x"
tup[1][1] = "y"
print(tup)  # (1,["x","y"])

区别

  • Java 没有内置 Tuple,需要 AbstractMap.SimpleEntry<> 或第三方库(如 Apache Commons Lang 的 ImmutablePair<>)。
  • Python 原生支持 Tuple,适合方法返回多个值,且比 list 更节省内存。tuple和list非常类似,但是tuple一旦初始化就不能修改。这个不能修改说的是指向,或者说是内存地址,如果放的是一个list,list里面的值是可以修改的。快去实验一下。

2. 列表(List)

特性

Java(ArrayList)

Python(list)

是否可变

(可变)

(可变)

是否有序

允许重复元素

索引访问

应用场景

变长数组存储、动态列表

变长数组存储、通用列表

示例

Java

import java.util.ArrayList;
import java.util.List;

List list = new ArrayList<>();
list.add("apple");
list.add("banana");
System.out.println(list.get(0));  // apple

Python

list_var = ["apple", "banana",1,True]
print(list_var[0])  # apple

区别

  • Java 需要 ArrayList<>,泛型需要声明。
  • Python 直接使用 list,可以存放不同类型数据

3. 集合(Set)

特性

Java(HashSet)

Python(set)

是否可变

(可变)

(可变)

是否有序

(无序)

(无序)

允许重复元素

(自动去重)

(自动去重)

索引访问

(不支持索引)

(不支持索引)

应用场景

去重存储、集合运算

去重存储、集合运算

示例

Java

import java.util.HashSet;
import java.util.Set;

Set set = new HashSet<>();
set.add("apple");
set.add("banana");
set.add("apple");  // 重复项不会被添加
System.out.println(set);  // [apple, banana]

Python

set_var = {"apple", "banana", "apple"}  # 重复项不会被添加
print(set_var)  # {'apple', 'banana'}

区别

  • Java 需要 new HashSet<>(),Python 直接 {} 定义。
  • Python 支持 set 直接进行并集、交集、差集运算,如 set1 | set2,Java 需要 addAll()。

4. 字典(Dict/Map)

特性

Java(HashMap)

Python(dict)

是否可变

(可变)

(可变)

是否有序

(无序)

(Python 3.7+ 按插入顺序)

是否允许重复 Key

(Key 唯一)

(Key 唯一)

是否允许 null Key

(允许 null)

(允许 None)

是否允许 null Value

索引访问

(map.get(key))

(dict[key])

应用场景

关联存储、键值对查询

关联存储、键值对查询

示例

Java

import java.util.HashMap;
import java.util.Map;

Map map = new HashMap<>();
map.put("apple", 10);
map.put("banana", 20);
System.out.println(map.get("apple"));  // 10

Python

dict_var = {"apple": 10, "banana": 20}
print(dict_var["apple"])  # 10

区别

  • Java 需要 put() 方法添加键值对,Python 直接 dict_var[key] = value。
  • Python 3.7+ 的 dict 默认有序(按插入顺序),Java HashMap<> 无序。

5. 数据结构 API 对比

操作

Java(List/Set/Map)

Python(list/tuple/set/dict)

新增元素

list.add(val)

list.append(val)

删除元素

list.remove(val)

list.remove(val)

获取索引元素

list.get(index)

list[index]

字典遍历 Key-Value

for (Map.Entry entry : map.entrySet())

for k, v in dict_var.items():

集合交集

set1.retainAll(set2)

set1 & set2

集合并集

set1.addAll(set2)

`set1

6. 数组对比

特性

Java(Array)

Python(list / array.array)

是否定长

(固定大小)

list (可变大小) / array.array (固定大小)

类型限制

(只能存相同类型)

list (可存多种类型) / array.array (单一类型)

性能

(高效)

list (较慢) / array.array (更接近 C 数组)

适合场景

数值计算、大规模数据存储

list 适合通用存储 / array.array 适合数值运算


6.1. Java 的数组

Java 中的数组是固定大小的,并且只能存储相同类型的数据。例如:

java复制编辑public class Main {
    public static void main(String[] args) {
        int[] arr = new int[5]; // 创建长度为5的数组
        arr[0] = 10;
        arr[1] = 20;
        System.out.println(arr[0]); // 10
    }
}

特点

  • 只能存储相同类型的元素(如 int[]、double[])。
  • 必须声明大小,否则会报错。

6.2. Python 的数组

Python 有两种方式表示数组:

  1. 列表(list):动态可变,支持存储不同类型。
  2. 数组模块(array.array):性能更优,支持固定类型数据(类似 Java 数组)。

使用 array.array

import array
arr = array.array('i', [10, 20, 30])  # 'i' 代表存储整数
print(arr[0])  # 10

特点

  • 必须存相同类型数据(类似 Java 数组)。
  • 性能比 list 更优,接近 C 语言的数组。

接下来把判断语句和循环搞定之后就能写程序了,加油!!

相关文章

Python 中的元组

元组是 Python 中的一种内置数据结构,可用于存储项目的有序集合。与列表类似,元组可以在单个实体中保存多种数据类型,但它们是不可变的,这意味着一旦创建,就无法修改、添加或删除元素。此属性使 Tup...

Python的元组,没想象的那么简单

来源:AI入门学习作者:小伍哥Python的元组与列表类似,元组一旦创建,元组中的数据一旦确立就不能改变,不能对元组中中的元素进行增删改操作,因此元组没有增加元素append、更新元素update、弹...

python序列之元组详解

与列表类似,元组也是由任意元素组成的序列,不同的是元组是不可变的,意味着一旦元组被定义将无法再进行修改操作,因此它显得比较古板。元组的创建:可以使用() 创建元组empty = () #定义了一个空元...

3分钟掌握Python 中的元组

元组是 Python 中一种重要的数据类型,它允许您存储值集合,类似于列表。但是,元组与列表的不同之处在于它们是不可变的,这意味着元组一旦创建,就无法修改。2. 语法在 Python 中,元组是通过在...

Python中的元组详解

1.介绍元组是Python中一种重要的数据类型,它允许存储值的集合,类似于列表。然而,元组与列表的不同之处在于它们是不可变的,这意味着一旦创建了元组,就不能修改它。2.语法在Python中,元组是通过...

Python 元组详解

1. 理解Python中的元组1.1 什么是元组?Python 中的元组是不可变的、有序的元素集合。与列表不同,元组一旦创建就无法修改,这使得它们适合数据完整性至关重要的情况。1.2 创建元组在 Py...