队列 栈 哈希表

队列 先进先出 LinkedList   添加方法 addLast();表示向队列里添加对象;getFirst();获取方法从队列里获取对象;队列数据结构为先进先出,也可用动态数组实现队列的结构;例如定义一个动态数组,向里面添加对象,然后再从里面取对象,

栈 后进先出 Stack;存数据(压栈)push();向栈里面添加对象; 取数据(弹栈) pop();从栈里面取出对象

栈也可用动态数组来实现栈的后进先出的数据结构

例如

package stack;

import java.util.Stack;

public class MyStacks {
  Stack<Student>students=new Stack<Student>();//定义了一个栈的数据存储空间
  public void add(){
   Student stuA=new Student("赵三");//实例化几个学生对象
   Student stuB=new Student("钱二");
   Student stuC=new Student("孙四");
   Student stuD=new Student("李五");
   students.push(stuA);//向栈里面添加对象使用压栈push()方法****
   students.push(stuB);
   students.push(stuC);
   students.push(stuD);
  }
  public Student find(){
   Student stu=students.pop();//从栈里面取出对象弹栈;使用pop方法
   return stu;
   
  }
}

 

package stack;

public class Text {
public static void main(String args[]){
 MyStacks demo=new MyStacks();
 demo.add();
 Student stu=demo.find();//定义一个类接受返回值的类
 System.out.println("从栈里面取出的数据为"+stu.name);
}
}
//结果是  从栈里面取出的数据为李五
后进先出数据结构,李五为最后添加进栈的对象,所以弹栈取出的第一个是李五

也可用动态数组实现栈的数据结构,依次存取对象,但是从最后一个取,实现后进先出结构

package stack;

import java.util.ArrayList;

public class MyStack {
 public  ArrayList<Student> students = new ArrayList<Student>();//定义了以个动态数组用来存储学生对象

 public void dopush() {
  Student stuA=new Student("赵三");//实例化学生对象
  Student stuB=new Student("钱二");
  Student stuC=new Student("孙四");
  Student stuD=new Student("李五");

  students.add(stuA);//动态数组添加对象使用add()方法
  students.add(stuB);
  students.add(stuC);
  students.add(stuD);
 }

 public Student dopop() {
  Student stu = null;
  System.out.println("students数组大小为" + students.size());
  
  stu = students.get(students.size() - 1);//从数组的最后一个下标取元素,数组取元素使用get()方法,
//size为数组大小,-1是因为数组下标从0开始
  return stu;

 }
}

package stack;

public class Demo {
 public static void main(String args[]){
  
  MyStack mystack=new MyStack();
  mystack.dopush();
  
  
   Student stu1=mystack.dopop();
   System.out.println(stu1.name);
  }
  
  
  
 }
 


 哈希表

哈希表在存储对象的时候会给对象一个key ,钥匙,查找的时候可以输入key直接查找,不用再遍历数组

package hashmap;

import java.util.HashMap;
import java.util.Scanner;

public class Demo1 {
 HashMap<String, Student> hash = new HashMap<String, Student>();//定义了一个哈希表存储数据

 public void add() {//添加方法
  Student stuA = new Student("张三");
  Student stuB = new Student("李四");
  Student stuC = new Student("王五");
  Student stuD = new Student("赵六");
  Student stuE = new Student("赵七");
  hash.put("张三", stuA);//向哈希表存储对象的时候,前面就给它定义了一个key
  hash.put("李四", stuB);
  hash.put("王五", stuC);
  hash.put("赵六", stuD);
  //hash.put(null, stuE);错误示范,看到它添加对象的时候需要添加什么参数;
 }

 public Student find() {//查找方法
  System.out.println("请输入你需要查找的姓名");
  Scanner sc = new Scanner(System.in);
  String name = sc.next();

  Student stu = hash.get(name);//通过控制台输入的名字去获取对象
  if(stu==null){//如果没有获取到对象就是空,哈希表直接获取不用去比较
   System.out.println("没有找到该学生");
  }else{
  System.out.println("姓名为" + stu.name);
  }

  return stu;

 }

 public static void main(String srgs[]) {
  Demo1 demo = new Demo1();
  demo.add();
  Student stu = demo.find();
  

 }
}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值