import java.util.Arrays; public class Demo2 { public static void main(String[] args) { MyHash<String> myHash=new MyHash<>(); myHash.addHash("java"); myHash.addHash("C"); myHash.addHash("C++"); myHash.addHash("python"); myHash.addHash("hadoop"); myHash.addHash("tree"); System.out.println(myHash); } } class MyHash<E> { private MyList<E>[] myLists; private int height= 16; public MyHash() { this.myLists = new MyList[height]; for (int i = 0; i <height ; i++) { myLists[i]=new MyList<>(); } } public void addHash(E e){ int num=Math.abs(e.hashCode()%height); myLists[num].add(e); } class MyList <E>{ private Node height; private int count; public MyList (){ this.height=new Node(); } private class Node { private Node next; private E ele; public Node(){} public Node(E ele) { this.ele = ele; } } public void add(E e) { Node node = new Node(e); Node temp = height; boolean ip = true; if (count == 0) { height = node; } while (temp.next != null) { if (temp.ele == e) { ip = false; break; } temp = temp.next; } if (ip) { temp.next = node; count++; } } @Override public String toString() { if(count==0){ return "[]"; } //1.实例化一个StringBuffer对象,用来装最后的元素信息 StringBuilder stringBuilder=new StringBuilder("{"); //2.遍历每一个节点 Node node=this.height; for (int i = 0; i <count ; i++) { //元素的拼接 stringBuilder.append(node.ele).append(", "); //相当于节点向后移一位,指向下一个节点 node=node.next; } stringBuilder.replace(stringBuilder.length()-2,stringBuilder.length(),"}"); return stringBuilder.toString(); } } @Override public String toString() { return "MyHash{" + "myLists=" +" "+ Arrays.toString(myLists)+" " + ", height=" + height + '}'; } }
12-23
5636
09-16
09-16