迭代器的接口
package com.tr.My;
public interface MyIterator {
public boolean hasNext();
public Object next();
}
栈表的方法
package com.tr.My;
public class MyLinkedList {
private static class Node{
private Object data;
private Node next;//下一个节点
public Node(Object data) {
this.data=data;
}
//连接下一个节点
public void link(Node other) {
this.next=other;
}
//复写toString方法
public String toString() {
return this.data.toString();
}
//复写hashCode方法
public int hashCode() {
return data.hashCode();
}
//复写equals方法
public boolean equals(Object obj) {
if(obj==null) {
return false;
}
if(obj.hashCode()!=data.hashCode()) {
return false;
}
if(!(obj instanceof Node)) {
return false;
}
Node other=(Node)obj;
return this.data.equals(other.data);
}
}
private Node first;
private int size;
//往链表里面增添元素
public void add(Object obj) {
Node newNode=new Node(obj);
if(size==0) {
first=newNode;
}else {
Node curr=first;
while(curr.next!=null) {
curr=curr.next;
}
curr.link(newNode);
}
size++;
}
//删除指定位置的元素
public boolean remove(Object obj) {
Node node=new Node(obj);
Node a=null;
if(size==0) {
return false;
}
for(Node curr=first;curr!=null;curr=curr.next) {
if(curr.equals(node)) {
if(curr==first) {
first=first.next;
curr.next=null;
}else {
a.link(curr.next);
curr.next=null;
}
return true;
}
a=curr;
}
return false;
}
public String toString() {
StringBuilder sb=new StringBuilder("[");
for(Node curr=first;curr!=null;curr=curr.next) {
if(curr==first) {
sb.append(curr);
}else {
sb.append(",").append(curr);
}
}
sb.append("]");
return sb.toString();
}
//迭代器
public MyIterator iterator() {
return new MyIterator(){
private Node a=null;
@Override
public boolean hasNext() {
return a!=null;
}
@Override
public Object next() {
Object data=a.data;
this.a=this.a.next;
return data;
}
};
}
//打印长度
public int size() {
return size;
}
}
测试方法
package com.tr.My;
public class Test {
public static void main(String[] args) {
MyLinkedList list=new MyLinkedList();
list.add(123);
list.add('n');
list.add("哈哈");
list.add(23.32);
System.out.println(list);
System.out.println(list.size());
System.out.println("===========");
System.out.println(list.remove('n'));
System.out.println(list);
}
}