gpt4 book ai didi

JAVA HashMap 2D,无法获得制作 2D HashMap 的正确方法,我的意思是将 HashMap 转换为另一个 HashMap

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:31:33 32 4
gpt4 key购买 nike

我想制作一个包含学生姓名和科目的板,每个学生在每个科目中都有一个成绩(或者没有..他可以离开考试而不写,然后他的案子将是空的)。我只想使用 HashMap。我的意思是,它会是这样的:

HashMap<String,HashMap<String,String>> bigBoard = 
new HashMap<String,HashMap<String,String>>();

但我认为,我没有正确的想法,因为对于每个科目,会有很多成绩(值),所以这是不可能的。我必须为每个学生制作一张 map 吗?与他的主题?但随后将不会安排输出表。你有提议吗?例如,我想要一张看起来像那样的 table 。

Column-Key →
Rowkey↓ Mathematics Physics Finance

Daniel Dolter 1.3 3.7

Micky Mouse 5

Minnie Mouse 1.7 n/a

Dagobert Duck 4.0 1.0

(我会使用所有的键/值作为字符串,这样会更简单。)

在我们的类实现之后(比如类名是String2D),我们应该这样使用它。

public static void main(String[] args) {

String2D map2D = new String2D();
map2D.put("Daniel Doster", "Practical Mathematics", "1.3");
map2D.put("Daniel Doster", "IT Systeme", "3.7");
map2D.put("Micky Mouse", "Finance", "5");
map2D.put("Minnie Mouse", "IT Systeme", "1.7");
map2D.put("Minnie Mouse", "Finance", "n/a");
map2D.put("Dagobert Duck", "Practical Mathematics", "4.0");
map2D.put("Dagobert Duck", "Finance", "1.0");
System.out.println(map2D);
}

不会看到“HashMap”......并且不允许使用数组

最佳答案

你可以使用这个类:

public class BiHashMap<K1, K2, V> {

private final Map<K1, Map<K2, V>> mMap;

public BiHashMap() {
mMap = new HashMap<K1, Map<K2, V>>();
}

/**
* Associates the specified value with the specified keys in this map (optional operation). If the map previously
* contained a mapping for the key, the old value is replaced by the specified value.
*
* @param key1
* the first key
* @param key2
* the second key
* @param value
* the value to be set
* @return the value previously associated with (key1,key2), or <code>null</code> if none
* @see Map#put(Object, Object)
*/
public V put(K1 key1, K2 key2, V value) {
Map<K2, V> map;
if (mMap.containsKey(key1)) {
map = mMap.get(key1);
} else {
map = new HashMap<K2, V>();
mMap.put(key1, map);
}

return map.put(key2, value);
}

/**
* Returns the value to which the specified key is mapped, or <code>null</code> if this map contains no mapping for
* the key.
*
* @param key1
* the first key whose associated value is to be returned
* @param key2
* the second key whose associated value is to be returned
* @return the value to which the specified key is mapped, or <code>null</code> if this map contains no mapping for
* the key
* @see Map#get(Object)
*/
public V get(K1 key1, K2 key2) {
if (mMap.containsKey(key1)) {
return mMap.get(key1).get(key2);
} else {
return null;
}
}

/**
* Returns <code>true</code> if this map contains a mapping for the specified key
*
* @param key1
* the first key whose presence in this map is to be tested
* @param key2
* the second key whose presence in this map is to be tested
* @return Returns true if this map contains a mapping for the specified key
* @see Map#containsKey(Object)
*/
public boolean containsKeys(K1 key1, K2 key2) {
return mMap.containsKey(key1) && mMap.get(key1).containsKey(key2);
}

public void clear() {
mMap.clear();
}

}

然后像这样创建使用它:

BiHashMap<String,String,String> bigBoard = new BiHashMap<String,String,String>();

但是为了提高性能,您可能希望将不同的成绩存储在一个数组中(假设您有一组固定的类(class))

关于JAVA HashMap 2D,无法获得制作 2D HashMap 的正确方法,我的意思是将 HashMap 转换为另一个 HashMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10299560/

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