栈是限定仅在表尾进行插入或者删除的线性表。对于栈来说,表尾端称为栈顶(top),表头端称为栈底(bottom)。不含元素的空表称为空栈。因为栈限定在表尾进行插入或者删除,所以栈又被称为后进先出的线性表,一个例子
import java.util.Stack;
public class arrayStackTest {
public static void main(String[] args) {
arrayStack stack = new arrayStack(3);
//空栈的情况
stack.show();
System.out.println();
//入栈
stack.push(1);
stack.push(2);
stack.push(3);
//栈的大小只有3 所以会超出
stack.push(4);
//查看栈的情况
stack.show();
System.out.println();
//出栈
stack.pop();
stack.show();
System.out.println();
System.out.println();
//jdk的栈方法
Stack stack1 = new Stack();
//查看栈是否为空
System.out.println(stack1.empty());
//入栈
stack1.push(1);
stack1.push(2);
stack1.push(3);
System.out.println();
//查看指定值再栈中的位置
System.out.println("查看指定值再栈中的位置"+stack1.search(2));
//查看栈顶数据(不是出栈)
System.out.println();
System.out.println("查看栈顶数据"+stack1.peek());
System.out.println();
//出栈
System.out.println("出栈"+stack1.pop());
System.out.println();
System.out.println("查看栈顶数据"+stack1.peek());
stack1.peek();
}
}
//声明一个类 用数组来模拟栈
class arrayStack {
private static int maxSize;//栈的大小
private static int[] stack;//栈
private static int top = -1;//栈顶
//重写构造方法来构造一个栈
public arrayStack(int maxSize){
//获取栈的大小
this.maxSize = maxSize;
//声明栈的大小
stack = new int[this.maxSize];
}
//查看栈是否为空
public static boolean isEmpty(){
return top == -1;
}
//查看栈是否已满
public static boolean isFull(){
return top == maxSize-1;
}
// 将传入的值入栈
public static void push(int value){
//查看栈是否满了
if (isFull()){
System.out.println("栈已满!");
return;
}
top++;
stack[top] = value;
}
//出栈
public static int pop(){
//查看是否为空
if (isEmpty()){
throw new RuntimeException("栈空,出栈失败");
}
top--;
return stack[top+1];
}
//遍历栈
public static void show(){
if (isEmpty()){
System.out.println("栈空!");
return;
}
for (int i=top;i>-1;i--){
System.out.println(stack[i]);
}
}
}
HashMap 是一个储存 键值对(键值) 集合 一个例子
import java.util.HashMap;
import java.util.LinkedHashMap;
public class hashMapTest {
public static void main(String[] args) {
//创建一个hashmap 里面的每一个元素都是一个键值对(kay,value)
//<>内前面的是key的数据类型 后面是value 值的数据类型
HashMap hm = new HashMap();
//添加
hm.put(1,"数据1");
HashMap hm1 = new HashMap();
hm1.put(2,"数据2");
hm1.put(3,"数据3");
//将一个hashmap集合的内加进来
hm.putAll(hm1);
//获取集合内容
System.out.println(hm.entrySet());
//获取集合内数据的数量
hm.size();
//克隆集合?
System.out.println(hm.clone());
//如果要添加的键值对中的键(key)集合内没有那么添加 如果有就不添加
hm.putIfAbsent(4,"数据4");
hm.putIfAbsent(3,"数据4");
System.out.println(hm);
//删除对应kay的键值对
hm.remove(4);
System.out.println(hm);
//查看对应key的键值对是否在集合中
System.out.println(hm.containsKey(3));
//查看对应value的键值对是否在集合中
System.out.println(hm.containsValue("数据4"));
//查看集合内所有的key
System.out.println(hm.keySet());
//查看集合内所有的value
System.out.println(hm.values());
//查看传入的kay对应的键值对
System.out.println(hm.get(2));
//查看传入的kay对应的键值对 如果没有找到就返回后面设置的那个信息
System.out.println(hm.getOrDefault(4,"未找到"));
//替换对应kay的键值对
hm.replace(3,"替换数据");
System.out.println(hm.get(3));
}
}



