package com.structure.demo; import android.app.Activity; import android.os.Bundle; import android.util.Log; public class HasTableActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); HashTab hashTab = new HashTab(7); Employer employer1 = new Employer("1", "张飞"); Employer employer2 = new Employer("144", "关羽"); Employer employer3 = new Employer("151", "刘备"); Employer employer4 = new Employer("158", "夏侯渊"); hashTab.add(employer1); hashTab.add(employer2); hashTab.add(employer3); hashTab.add(employer4); hashTab.find("144"); hashTab.showList(); } } class HashTab { private EmployerLinkedList[] employerLinkedList; private int size; public HashTab(int size) { employerLinkedList = new EmployerLinkedList[size]; this.size = size; //创建每一个链表 for (int i = 0; i < size; i++) { employerLinkedList[i] = new EmployerLinkedList(); } } /** * 根据id添加到每一条数据到某一个链表中 */ public void add(Employer employer) { //根据员工的id判断员工应该添加到哪条链表 int employerLinkedListNo = hashFun(Integer.parseInt(employer.no)); employerLinkedList[employerLinkedListNo].add(employer); } /** * */ /** * 编写散列函数 */ public int hashFun(int id) { return id % size; } /** * 展示hashTable的数据 */ public void showList() { for (int i = 0; i < employerLinkedList.length; i++) { employerLinkedList[i].showList(i); } } /** * 查找某个元素 */ public void find(String no) { employerLinkedList[hashFun(Integer.parseInt(no))].find(no); } } class Employer { String no; String name; Employer next; public Employer(String no, String name) { this.no = no; this.name = name; } } class EmployerLinkedList { Employer head; /** * 向链表中添加元素 * * @param employer */ public void add(Employer employer) { if (head == null) { head = employer; return; } Employer curEmployer = head; while (true) { if (curEmployer.next == null) { break; } curEmployer = curEmployer.next; } curEmployer.next = employer; } /** * 展示链表的数据 */ public void showList(int i) { if (head == null) { Log.i("tag", "第" + (i + 1) + "链表数据为空"); return; } Employer curEmployer = head; while (true) { Log.i("tag", "第" + (i + 1) + "条链表数据为:" + curEmployer.no + " " + curEmployer.name + "=>"); if (curEmployer.next == null) { break; } curEmployer = curEmployer.next; } } /** * 查找某个元素 */ public Employer find(String no) { if (head == null) { Log.i("tag", "链表为空"); return null; } Employer curEmployer = head; while (true) { if (curEmployer.no.equals(no)) { Log.i("tag", "元素的名字为:" + curEmployer.name); break; } if (curEmployer.next == null) { curEmployer = null; Log.i("tag", "该元素不存在"); break; } curEmployer = curEmployer.next; } return curEmployer; } }
数据结构和算法——哈希表
最新推荐文章于 2024-07-30 15:09:03 发布