gpt4 book ai didi

java - 作为初学者编写我自己的 Java Map 实现

转载 作者:行者123 更新时间:2023-12-01 16:34:56 25 4
gpt4 key购买 nike

我是 Java 集合的新手。我正在使用Map,所以请告诉我就像java提供了Map一样,我们也可以制作自己的Map吗?假设有一个名为 MineMap 的 map 。请告诉我如何实现这一目标。我在谷歌搜索时发现了这样的东西:

public interface MyMap
{
public void put(Object key,Object value);
public Object get(Object key);
public int size();
public Set keySet();
public Set entrySet();
public interface MyEntry
{
public Object getKey();
public Object getValue();
}
}

及其实现:

class MySimpleMap implements MyMap
{
private ArrayList keys;
private ArrayList values;
private int index;

public MySimpleMap()
{
keys=new ArrayList();
values=new ArrayList();
index=0;
}

public void put(Object key,Object value)
{
keys.add(key);
values.add(value);
index++;
}

public Object get(Object key)
{
int i=keys.indexOf(key);
if (i>=0)
return values.get(i);
else
return null;
}

public int size()
{
return index;
}

public Set keySet()
{
HashSet set=new HashSet();
set.addAll(keys);
return set;
}

//Nested class starts...
class MySimpleEntry implements MyMap.MyEntry
{
Object key;
Object value;

public MySimpleEntry(Object k,Object v)
{
key=k;
value=v;
}

public Object getKey()
{
return key;
}

public Object getValue()
{
return value;
}
}// Nested class ends.

public Set entrySet()
{
HashSet set=new HashSet();
for (int i=0;i<index;i++)
{
Object k=keys.get(i);
Object v=values.get(i);
MySimpleEntry temp=new MySimpleEntry(k,v);
set.add(temp);
}
return set;
}
}

最后这是使用这个的类:

class MyMapDemo
{
public static void main(String arr[])
{
MySimpleMap map=new MySimpleMap();
map.put("Amit","Java");
map.put("Rahul",".Net");
map.put("Nitin","SQT");
map.put("Ajay","PHP");
map.put("Raman","Java");
System.out.println("There are "+map.size()+" elemenets in the map...");
System.out.println("contents of Map...");
Set s=map.entrySet();
Iterator itr=s.iterator();
while(itr.hasNext())
{
MyMap.MyEntry m=(MyMap.MyEntry) itr.next();
System.out.println(m.getKey()+"\t"+m.getValue());
}
Scanner in=new Scanner(System.in);
System.out.println("Enter Name to find out course, ctrl+c to terminate...");
while(true)
{
System.out.println("Name:");
String n=in.nextLine();
System.out.println("Course is:"+map.get(n));
}
}
}

但我需要一些更简单的实现。

最佳答案

您提到您是初学者,想要实现自己的 map 。对于初学者来说,编写 map 还为时过早。集合框架已经给出了多种数据类型的优化且经过验证的实现。理解这些比重新发明轮子更重要。

  • 您可以轻松获取java库源并尝试看看它们是如何实现集合类的。它是最先进的开发,涵盖了许多细节。

  • 关于实现。

但是,你发现的任何东西都不能直接归类为 map 。毫无疑问也会做类似的事情。

  • 不是通用实现。
  • 未实现 Map,因此可以对现有 Map 类型变量使用 impl,反之亦然。
  • 无法使用Collections.class中的算法。

您可能想要编写实现,例如包含上述功能。

// Hash map java library defined as follows.
public class HashMap<K,V>
extends AbstractMap<K,V>
implements Map<K,V>, Cloneable, Serializable


// Hence, you may want to write this.
public class MyMap<K,V>
extends AbstractMap<K, V> // May skip this
implements Map<K,V>, Cloneable, Serializable // important
{
//Now it will ask to write all the methods which are defined in Map interface.
//These are minimum methods required for Map operations.
}

关于java - 作为初学者编写我自己的 Java Map 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10184554/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com