Java集合类之栈Stack

package com.test;
import java.util.*;

public class Demo7_3 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        Emp emp = new Emp("sa001", "xiaoming", 12.3f);
        Stack stack = new Stack();
        stack.add(emp);
        for (int i = 0; i < stack.size(); i++) {
            Emp temp  = (Emp)stack.get(i);
            System.out.println(temp.getName());
        }
    }
}

//雇员管理类
class EmpManage {
    private ArrayList al = null;

    // 构造函数最主要的作用就是初始化成员变量
    public EmpManage() {
        al = new ArrayList();
    }

    // 加入员工
    public void addEmp(Emp emp) {
        al.add(emp);
    }

    // 根据员工号显示该员工的相关信息
    public void showInfo(String empNo) {
        // 遍历整个ArrayList
        for (int i = 0; i < al.size(); i++) {
            // 取出Emp对象
            Emp emp = (Emp) al.get(i);

            // 比较编号
            if (emp.getEmpNo().equals(empNo)) {
                System.out.println("找到该员工,他的信息是");
                System.out.println("编号=" + empNo);
                System.out.println("名字=" + emp.getName());
                System.out.println("工资=" + emp.getSal());
            }
        }
    }

    // 修改工资
    public void updateSal(String empNo, float newSal) {
        for (int i = 0; i < al.size(); i++) {
            Emp emp = (Emp) al.get(i);
            if (emp.getEmpNo().equals(empNo)) {
                // 修改薪水
                emp.setSal(newSal);
            }
        }
    }

    // 删除员工
    public void delEmp(String empNo) {
        for (int i = 0; i < al.size(); i++) {
            Emp emp = (Emp) al.get(i);
            if (emp.getEmpNo().equals(empNo)) {
                // 两种删除方式都可以
                al.remove(i);
                // al.remove(emp);
            }
        }
    }
}

//雇员类
class Emp {

    // 学号
    private String empNo;
    private String name;
    private float sal;

    // 构造函数
    public Emp(String empNo, String name, float sal) {
        super();
        this.empNo = empNo;
        this.name = name;
        this.sal = sal;
    }

    public String getEmpNo() {
        return empNo;
    }

    public void setEmpNo(String empNo) {
        this.empNo = empNo;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public float getSal() {
        return sal;
    }

    public void setSal(float sal) {
        this.sal = sal;
    }

}
时间: 2024-08-08 00:50:32

Java集合类之栈Stack的相关文章

Java再学习——栈(stack)和堆(heap)

一.内存分配的策略 按照编译原理的观点,程序运行时的内存分配有三种策略,分别是静态的,栈式的,和堆式的. 静态存储分配是指在编译时就能确定每个数据目标在运行时刻的存储空间需求,因而在编译时就可以给他们分配固定的内存空间.这种分配策略要求程序代码中不允许有可变数据结构(比如可变数组)的存在,也不允许有嵌套或者递归的结构出现,因为它们都会导致编译程序无法计算准确的存储空间需求. 栈式存储分配也可称为动态存储分配,是由一个类似于堆栈的运行栈来实现的.和静态存储分配相反,在栈式存储方案中,程序对数据区的

关于Java堆、栈和常量池的详解

在JAVA中,有六个不同的地方可以存储数据: 1. 寄存器(register). 这是最快的存储区,因为它位于不同于其他存储区的地方--处理器内部.但是寄存器的数量极其有限,所以寄存器由编译器根据需求进行分配.你不能直接控制,也不能在程序中感觉到寄存器存在的任何迹象. 最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制). 2. 堆栈(stack). 位于通用RAM中,但通过它的"堆栈指针"可以从处理器哪里获得支持.堆栈指针若向下移动,则分配新的内存:若向上移动,则释放那些

Java里的堆(heap)栈(stack)和方法区(method)

基础数据类型直接在栈空间分配, 方法的形式参数,直接在栈空间分配,当方法调用完成后从栈空间回收.   引用数据类型,需要用new来创建,既在栈空间分配一个地址空间,又在堆空间分配对象的类变量 . 方法的引用参数,在栈空间分配一个地址空间,并指向堆空间的对象区,当方法调用完成后从栈空间回收.局部变量 new 出来时,在栈空间和堆空间中分配空间,当局部变量生命周期结束后,栈空间立刻被回收,堆空间区域等待GC回收. 方法调用时传入的 literal 参数,先在栈空间分配,在方法调用完成后从栈空间分配.

a堆内存与栈内存异同(Java Heap Memory vs Stack Memory Difference)

--reference Java Heap Memory vs Stack Memory Difference 在数据结构中,堆和栈可以说是两种最基础的数据结构,而Java中的栈内存空间和堆内存空间有什么异同,以及和数据结构中的堆栈有何关系? 一.Java 堆存储空间 堆内存(堆存储空间)会在Java运行时分配给对象(Object)或者JRE的类.只要我们创建了一个对象,那么在堆中肯定会分配一块存储空间给这个对象.而我们熟知的Java垃圾回收就是在堆存储空间上进行的,用以释放那些没有任何引用指向

Java 堆内存与栈内存异同(Java Heap Memory vs Stack Memory Difference)

--reference Java Heap Memory vs Stack Memory Difference 在数据结构中,堆和栈可以说是两种最基础的数据结构,而Java中的栈内存空间和堆内存空间有什么异同,以及和数据结构中的堆栈有何关系? 一.Java 堆存储空间 堆内存(堆存储空间)会在Java运行时分配给对象(Object)或者JRE的类.只要我们创建了一个对象,那么在堆中肯定会分配一块存储空间给这个对象.而我们熟知的Java垃圾回收就是在堆存储空间上进行的,用以释放那些没有任何引用指向

Java 栈(stack)与堆(heap) 详解

Java 栈(stack)与堆(heap)1.概念    栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方.与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆.栈,堆的数据结构    栈就像装数据的桶或箱子      它是一种具有后进先出性质的数据结构,也就是说后存放的先取,先存放的后取.      这就如同我们要取出放在箱子里面底下的东西(放入的比较早的物体),我们首先要移开压在它上面的物体(放入的比较晚的物体).    堆像一棵倒过来的树      而堆

java栈stack和堆heap的工作原理,用途及区别?举例说明

java堆和栈的区别[新手可忽略不影响继续学习] (视频下载) (全部书籍) Java中内存分成两种:一种是栈stack,一种是堆heap. 函数中的一些基本类型的变量(int, float)和对象的引用变量(reference)都在函数的栈中,如int a = 5,有个地方先存5,之后再让a指向那个地方.w=new Window(),是w指向Window的首地址.马克-to-win,存取速度快,稍逊于寄存器, 比堆快, 函数执行完后,Java会自动释放掉为函数里变量开辟的栈内存空间,该内存空间

Java集合类: Set、List、Map、Queue使用

目录 1. Java集合类基本概念 2. Java集合类架构层次关系 3. Java集合类的应用场景代码 1. Java集合类基本概念 在编程中,常常需要集中存放多个数据.从传统意义上讲,数组是我们的一个很好的选择,前提是我们事先已经明确知道我们将要保存的对象的数量.一旦在数组初始化时指定了这个数组长度,这个数组长度就是不可变的,如果我们需要保存一个可以动态增长的数据(在编译时无法确定具体的数量),java的集合类就是一个很好的设计方案了. 集合类主要负责保存.盛装其他数据,因此集合类也被称为容

摘抄转载前辈们的Java集合类总结

JAVA 集合类介绍和使用    类关系示意图  Iterable(接口)      │      └--Collection (接口)          ├-List(接口)          │ ├-LinkedList  不同步  (构造同步:List list = Collections.synchronizedList(new LinkedList(...));)          │ ├-ArrayList   不同步           │ └-Vector      同步