队列 栈 哈希表

来源:互联网 发布:秦义绝捏脸数据图 编辑:程序博客网 时间:2024/06/06 04:54

队列 先进先出 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
原创粉丝点击