map实现
实现HashMap
/*
*路人假helloWorld
*/
package com.cjj.sort;
public class SymbolTable<Key,Value> {
private Node head;
private int N;
//内部结点类
public class Node{
public Key key;
public Value value;
public Node next;
public Node(Key key,Value value,Node next){
this.key = key;
this.value = value;
this.next = next;
}
}
public SymbolTable(){
this.head = new Node(null,null,null);
this.N = 0;
}
//获取符号表的大小
public int size(){
return N;
}
//向符号表中插入一个键值对
public void put(Key key,Value value){
Node n = head;
//如果符号表中已有该建,则覆盖原来的value值
while(n.next != null){
n = n.next;
if (n.key.equals(key)){
n.value = value;
return;
}
}
//如果符号表中没有该键,则插入该键值对
Node newNode = new Node(key,value,null);
Node oldFist = head.next;
newNode.next = oldFist;
head.next = newNode;
N++;
}
//删除键为key的键值对
public void delete(Key key){
Node n = head;
while(n.next != null) {
if (n.next.key.equals(key)) {
n.next = n.next.next;
N--;
return;
}
n = n.next;
}
}
//根据键,找对应的值
public Value get(Key key){
Node n = head.next;
while(n != null){
if (n.key.equals(key)){
return n.value;
}
n = n.next;
}
return null;
}
}
测试
package com.cjj.test;
import com.cjj.sort.SymbolTable;
public class SymbolTableTest {
public static void main(String[] args) {
SymbolTable<Integer,String> s = new SymbolTable<>();
s.put(1,"喜羊羊");
s.put(2,"灰太狼");
s.put(3,"懒羊羊");
s.put(4,"美羊羊");
System.out.println("键值对个数:" + s.size());
s.put(4,"红太狼");
System.out.println("替换后的值:" + s.get(4));
System.out.println("替换后的个数:" + s.size());
s.delete(3);
System.out.println("删除后元素的个数:" + s.size());
}
}
测试结果
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决