`

向量Vector,链表List,堆栈Stack

阅读更多
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.List;
import java.util.Stack;
import java.util.Vector;

public class Main {

	public static void main(String[] args) {

		// 向量
		Vector v = new Vector(); //Vector实现Enumeration接口
		Vector v1 = new Vector(40); // 指定初始容量
		for (int i = 1; i <= 20; i++) {
			v.addElement(Integer.toString(i));
		}
		for (int i = 0; i < v.size(); i++) { // 用索引遍历
			System.out.println(v.elementAt(i));
		}
		for (Enumeration e = v.elements(); e.hasMoreElements();) { // 使用枚举类遍历
			String s = (String) e.nextElement();
			System.out.println(s);
		}

		List list = new ArrayList(); // 只能存object类型的元素,需要下溯,或通过List<String> list
										// = new ArrayList<String>();
		for (int i = 1; i <= 20; i++) {
			list.add(Integer.toString(i));
		}
		for (int i = 0; i <= 19; i++) {
			System.out.println(list.get(i));
		}
		for (Iterator it = list.iterator(); it.hasNext();) {
			String s = (String) it.next();
			System.out.println(s);
		}

		// 表
		int[][] matrix = new int[4][];
		for (int i = 0; i < 4; i++) {
			matrix[i] = new int[5];
		}
		System.out.println("行数:" + matrix.length);
		System.out.println("列数:" + matrix[0].length);

		// 堆栈,java.util.Stack,继承Vector,增加了几个堆栈的操作
		Stack stack = new Stack();
		for (int i = 0; i < 10; i++) {
			stack.push(new Integer(i));
		}
		stack.addElement("a string");
		System.out.println("pop from stack:");
		while (!stack.empty()) {
			System.out.println(stack.pop());
		}

	}

java中的向量可用一维数组来实现,在java的System类中还提供了arraycopy(Object src,int srcPos,Object dest,int destPos,int length)方法,将一个数组的部分内容拷贝到另一个数组。把原数组从下标为srcPos到srcPos+length-1的部分复制到目标数组从下标destPos到destPos+length-1的区域中。

Vector类的方法是同步的,这使得Vector的内容是线程安全的,而ArrayList没实现同步,不是线程安全的。

矩阵指的是其中存储的数据都是同一类型的,而表可以存储多种类型的数据。


注意:能用java内置的数组完成的事情,就不要用各种工具类,因为大多数工具类也是通过数组实现的。
分享到:
评论

相关推荐

    C++ STL开发技术导引(第5章)

    第18章 stack堆栈容器 265 18.1 stack技术原理 265 18.2 stack应用基础 266 18.3 本章小结 269 第19章 queue队列容器 270 19.1 queue技术原理 270 19.2 queue应用基础 271 19.3 本章小结 274 第20章...

    ft_containers:我自己在C ++中实现的一些STL容器(列表,向量,地图,堆栈,队列...)

    1. **列表(List)**:列表是一种双向链表,允许在任意位置进行插入和删除操作,其时间复杂度为O(1)。列表中的元素通过指针链接,因此可以快速访问前后元素,但随机访问效率较低。`ft_containers`中的列表实现可能...

    Data-Structures:数据结构是我们编码过程中真正需要的东西。 每当您需要拥有大型数据库时,您都可以使用数据结构。 你有堆栈、链表、向量、树等作为数据结构,它们是存储数据的有效方式

    在C++编程中,`std::stack` 和 `std::list` 提供了对堆栈和链表的支持,而 `std::vector` 则是标准库提供的向量实现。通过熟练掌握这些数据结构,开发者可以构建更高效、更灵活的算法和软件系统。 在"Data-...

    Java常用数据结构与算法

    本文将详细介绍Java中的一些核心数据结构,包括向量(Vector)、枚举(Enumeration)、散列表(哈希表)(Hashtable)、属性(Properties),以及堆栈(Stack)、链表(List)等,并探讨数据排序和查找算法。 #### 二、向量...

    C++中STL使用总结

    本文档还记录了多次更新的历史,包括对vector、stack、queue、priority_queue、deque、list、bitset、set、multiset、map、multimap、string、heap以及next_permutation算法等各个容器和函数的添加和修改。...

    STL Quick Reference(PDF)

    `list`是一个双向链表,可以在任何位置高效地插入和删除元素,但不支持随机访问。 #### 3. 队列(Queue) `queue`是一个先进先出(FIFO)的容器适配器,主要用于处理数据流中的元素。 #### 4. 堆栈(Stack) `stack`是一...

    关于STL的数据结构归纳.pdf

    5. **堆栈 (stack)**: - `top()`:返回堆栈顶部的元素。 - `push(const T& x)`:将元素x压入堆栈。 - `pop()`:删除堆栈顶部的元素。 6. **集合 (set)**: - `insert(const T&x)`:插入元素x,如果不存在则...

    STL范例大全(C++)

    3. **List**:双向链表,支持高效的前向和后向遍历,可在任何位置快速插入和删除元素。 4. **Set** 和 **Multiset**:集合容器,存储唯一的元素(set)或允许重复元素(multiset),元素自动排序。 5. **Map** 和 ...

    STL 从入门到精通

    双端队列提供了向量(vector)的所有功能,但不支持capacity()和reserve()这两个与内存分配相关的函数,因为双端队列为了保持两端的开放性,其动态内存管理更为复杂。双端队列的内存开销比向量要大,且在随机访问...

    algorithms and programming

    常见的容器有向量(Vector)、列表(List)、队列(Queue)、堆栈(Stack)、集合(Set)、映射(Map)等。 - **向量(Vector)**:动态数组,支持随机访问,自动调整大小。 - **列表(List)**:双向链表,插入删除操作非常快。 ...

    c++标准模板库STL

    - **容器**:提供了多种数据结构,用于存储和管理数据,如向量(`vector`)、列表(`list`)、集合(`set`)等。 - **算法**:提供了一系列通用的操作,如排序(`sort`)、搜索(`find`)等,可以作用于任何满足一定...

    C++标准模板库源代码

    1. **vector**:向量是一种动态数组,可以在其末尾进行快速插入和删除操作。它提供了随机访问元素的能力,类似于C++中的数组。源代码会展示如何实现动态内存管理以及如何保证元素在内存中的连续性。 2. **deque**:...

    stl标准数据库

    顺序性容器是按照线性顺序存储数据,支持快速的顺序访问,包括vector(向量容器)、list(双向链表容器)和deque(双向队列容器)。关联容器是基于键值存储数据的容器,它们通常能够保持元素的排序,并且具有快速...

    STL标准模板库笔记

    主要的顺序容器有vector(向量容器)、list(双向链表容器)和deque(双向队列容器)。其中,vector提供动态数组的功能,支持快速的末尾添加和删除,以及随机访问任意元素,但插入和删除操作的性能较差;list提供...

    C++标准模板库

    ##### 2.1 C++ Vector(向量容器) **特点**: - **动态数组**:`Vector`本质上是一个动态数组,它能够自动调整大小以适应更多的数据。当数据超出当前容量时,`Vector`会重新分配更大的内存,并将原有数据复制过去...

    基本基于java的数据结构.zip

    13. **堆栈和队列的实现** - 使用数组或链表可以实现栈和队列,Java中的`java.util.Stack`和`java.util.Queue`接口提供了抽象层,便于实现不同的数据结构。 14. **跳表(Skip List)** - 跳表是一种可以快速查找的...

    C++_STL标准入门汇总

    - **栈(Stack)**:后进先出(LIFO)数据结构,类似于C语言的堆栈。 - **队列(Queue)**:先进先出(FIFO)数据结构,模拟现实生活中的队列。 - **优先队列(Priority Queue)**:元素按优先级排序的队列。 **四...

    数据结构(经典C++)

    - 使用标准模板库(STL),C++程序员可以轻松地访问预定义的数据结构,如向量(vector)、列表(list)、堆栈(stack)、队列(queue)和映射(map)等。 - C++支持动态内存管理,这使得在运行时创建和销毁复杂数据结构成为可能...

    C++_标准模板库(STL).

    1. **C++ VECTOR(向量容器)** - **概念**:`vector`是一种能够存储固定类型元素的动态数组,可以在运行时动态地改变其大小。它提供了快速的随机访问,并且在容器尾部插入和删除元素时性能最佳。 - **特点**: ...

    SGI-STL.rar_sgi stl

    1. **容器**:容器是SGI-STL中存储数据的主要结构,包括向量(Vector)、列表(List)、链表(Deque)、集合(Set)、映射(Map)、无序集合(Unordered Set)和无序映射(Unordered Map)。每个容器都有其特定的...

Global site tag (gtag.js) - Google Analytics