package DataStructureReview; import java.util.ArrayList; import java.util.LinkedList; public class HashTableDemo { public static void main(String[] args) { //创建hashtable HashTable hashTable = new HashTable(); //添加数据 hashTable.add(new Emp(1, "x")); hashTable.add(new Emp(2, "y")); hashTable.add(new Emp(3, "z")); hashTable.add(new Emp(4, "a")); //遍历 System.out.println(hashTable.toString()); //根据id查询元素 System.out.println(hashTable.findEmpById(2)); //根据id删除元素 System.out.println(hashTable.delete(2)); System.out.println(hashTable); } } class HashTable { private ArrayList<LinkedList> linkedlistarr = new ArrayList(); //设置哈希表链表条数 private int size = 10; //为链表数组初始化 public HashTable() { for (int i = 0; i < size; i++) { linkedlistarr.add(i, new LinkedList<Emp>()); } } //添加数据 public void add(Emp emp) { //根据散列函数确定数据存放在第几条链表上 linkedlistarr.get(hashFun(emp.id)).add(emp); } //删除数据,根据员工id删除 public boolean delete(int id) { //获取数据存放的链表 LinkedList linkedList = linkedlistarr.get(hashFun(id)); //判断编号为id的员工是否存在 boolean flag = false; Emp emp = null; for (Object obj : linkedList) { emp = (Emp) obj; if (emp.id == id) { flag = true; break; } } //删除元素 if (flag == true) { linkedList.remove(emp); } return flag; } //根据id查询数据记录 public Emp findEmpById(int id) { //获取数据存放的链表 LinkedList linkedList = linkedlistarr.get(hashFun(id)); //判断编号为id的员工是否存在 boolean flag = false; Emp emp = null; for (Object obj : linkedList) { emp = (Emp) obj; if (emp.id == id) { flag = true; break; } } return flag ? emp : null; } //遍历hashtable @Override public String toString() { for (int i = 0; i < size; i++) { if (linkedlistarr.get(i).isEmpty() != true) { for (Object obj : linkedlistarr.get(i)) { System.out.println((Emp) obj); } } } return ""; } //散列函数(哈希函数),给定key value 返回存储在那条链表上 public int hashFun(int id) { //除留余数法 return id % size; } } class Emp { public int id; private String name; public Emp(int id, String name) { this.id = id; this.name = name; } @Override public String toString() { return "Emp{" + "id=" + id + ", name=‘" + name + ‘\‘‘ + ‘}‘; } }
原文:https://www.cnblogs.com/bajiaotai/p/12918699.html