Java中自定义Stack的Demo

来源:互联网 发布:今天怎么登录不上淘宝 编辑:程序博客网 时间:2024/06/11 07:16
import java.lang.reflect.Field;public class LinkedStack<T> {class Node<T> {/** * value storage object */T item;/** * next node */Node<T> next;/** * default constructor */Node() {item = null;next = null;}/** * full-param constructor *  * @param item * @param next */Node(T item, Node<T> next) {this.item = item;this.next = next;}@Overridepublic String toString() {return item == null ? null : item.toString();}/** * judge if linked stack reached its end *  * @return */boolean end() {return item == null && next == null;}}/** * override toString */@Overridepublic String toString() {StringBuilder stringBuilder = new StringBuilder("[");Node<T> temp = top;while( ! temp.end() ){stringBuilder.append(temp.toString()+",");temp = temp.next;}int length = stringBuilder.length();if( stringBuilder.indexOf(",", length-1) > -1 ){stringBuilder.deleteCharAt(length-1);}stringBuilder.append("]");return stringBuilder.toString();}/** * push operation *  * @param item */public void push(T item) {Node<T> insertNode = new Node<>(item, top);top = insertNode;}/** * pop operation *  * @return */public T pop() {T item = top.item;if (!top.end()) {top = top.next;}return item;}/** * peek * @return */public T peek(){T item = top.item;return item;}/** * top element as leading clue of the linked stack */private Node<T> top = new Node<>();}class TestLinkedStack {public static void main(String[] args) {LinkedStack<User> stack = new LinkedStack<>();stack.push(new User("Victor", "Male", 24));stack.push(new User("Lee", "Male", 24));User top = stack.peek();top = null;System.out.println( stack );}}class User {public String name;public String gender;public int age;public User(String name, String gender, int age) {super();this.name = name;this.gender = gender;this.age = age;}@Overridepublic String toString() {StringBuilder stringBuilder = new StringBuilder("{");Field[] fields = this.getClass().getDeclaredFields();for(Field field : fields) {field.setAccessible(true);String fieldName = field.getName();try {stringBuilder.append(fieldName+":"+field.get(this)+",");} catch (IllegalArgumentException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();}}int length = stringBuilder.length();if( stringBuilder.indexOf(",", length-1) > -1 ){stringBuilder.deleteCharAt(length-1);}stringBuilder.append("}");return stringBuilder.toString();}public static void main(String[] args) {User user = new User("Victor", "Male", 24);System.out.println(user);}}

0 0
原创粉丝点击