一、基础数据结构对比
数组(Array)
C/C++:固定大小数组(int arr),动态数组通过vector(C++)实现
Java:固定数组(int[]),动态数组用ArrayList
Python:列表(list)实现动态数组功能
Go:固定长度数组,动态数组用切片(slice)
JavaScript:数组(Array),支持动态扩展和混合类型
Rust:固定数组([i32; 5]),动态数组用Vec<T>
哈希表(Hash Table)
Java:HashMap
C++:unordered_map
Python:字典(dict)
Go:map
JavaScript:对象(Object)或Map
Rust:HashMap(需引入std::collections)
链表(Linked List)
C/C++:需手动实现节点结构(struct Node)
Java:LinkedList(双向链表)
Python:无原生实现,可借助列表模拟或自定义类
Go:通过container/list包实现
二、栈(Stack)和队列(Queue)
栈
C++:stack(基于deque或vector)
Java:Stack类或Deque接口模拟
Python:用列表的append()和pop()模拟
Go:通过切片或自定义结构实现
Rust:Vec提供栈方法(如push()、pop())
队列
C++:queue(基于deque)
Java:Queue接口(如LinkedList实现)
Python:queue.Queue或列表模拟
Go:通过container/list或通道(Channel)实现
Rust:VecDeque(双向队列)或第三方库
三、语言特有数据结构
C#
泛型列表:List(类似ArrayList)
哈希表:Dictionary<TKey, TValue>
链表:LinkedList [通用设计模式,未直接引用]
Python
元组(Tuple):不可变序列((1, “a”))
集合(Set):无序唯一元素集合({1, 2})
双向队列:collections.deque
Rust
字符串:String(UTF-8编码)和&str(切片)
Option和Result:用于错误处理的枚举类型
PHP
关联数组:array(支持键值对)
Spl数据结构:如SplStack、SplQueue(需扩展模块)
四、总结特点
C/C++:依赖手动实现或标准库(如vector、unordered_map),强调内存控制 ;
Java:提供丰富的集合框架(如ArrayList、HashMap),强调类型安全 ;
Python:内置灵活结构(list、dict),语法简洁但性能较低 ;
Go:通过切片和map简化动态数据操作,强调并发安全 ;
Rust:严格所有权机制下提供Vec、HashMap等安全数据结构 。