我有一个班级Group
。在课堂上,我有两个字段idGroup
IdGroupGroup
。团体可能是其他团体的一部分。我的班级Group
在HashMap<Integer,Integer>
中定义;密钥为IdGroupGroup
,值为idGroup
。我想在地图上搜索特定的idGroup
;我可以使用递归来做到这一点吗?
class Group
{
int idGroupe
String word
}
HashMap<Integer,Integer> GroupeGroupe = new HashMap<Integer,Integer>();
GroupeGroupe.put(idGroupeGroupe, idGroupe)
答案 0 :(得分:1)
鉴于一个模糊的问题,我必须猜测很多,但也许你正在寻找这样的东西:
import java.util.*;
public class Test {
static Map<Integer, Integer> groups = new HashMap<Integer, Integer>();
public static void main(String... args) {
groups.put(1, 2);
groups.put(2, 3);
groups.put(2, 4);
groups.put(4, 5);
System.out.println(searchFor(1, 5));
}
private static String searchFor(int from, int target) {
// Target found?
if (from == target) return "" + target;
// Dead end?
if (!groups.containsKey(from)) return null;
// Recurse and try to find it from here.
String path = searchFor(groups.get(from), target);
return path == null ? null : from + " -> " + path;
}
}
<强>输出:强> 1 - &gt; 2 - &gt; 4 - &gt; 5
或类似的东西:
static Map<Integer, Group> groups = new HashMap<Integer, Group>();
public static void main(String... args) {
groups.put(0, new Group(1, "hello")); // (0: -) -> (1: "hello")
groups.put(2, new Group(9, "!")); // (2: "world") -> (9, "!")
groups.put(3, new Group(5, "bye")); // (3: -) -> (5, "bye")
groups.put(1, new Group(2, "world")); // (1: "hello") -> (2: "world")
System.out.println(traverse(0));
}
private static String traverse(int from) {
if (!groups.containsKey(from)) return "";
String path = traverse(groups.get(from).idGroupe);
return path == null ? null : groups.get(from).word + " " + path;
}
}
打印哪些:
hello world !
答案 1 :(得分:0)
我不确定我理解你的问题,但我会尽力回答。 如果你有一个带有条目的java HashMap,我能正确理解你吗? 在这种情况下,每个idGroupGroup(java api)只有一个条目:
public V put(K key,V value)
将指定值与。关联 此映射中的指定键。如果 map以前包含映射 关键,旧值被替换。
如果这样很好,你只想对你可以使用的所有元素进行递归:
public Collection<V> values()
返回的Collection视图 此地图中包含的值。该 集合由地图支持,所以 地图的变化反映在 集合,反之亦然。如果 在迭代时修改map 该系列正在进行中 (除了通过迭代器自己的 删除操作),结果 迭代是未定义的。该 集合支持元素删除, 删除相应的 从地图映射,通过 Iterator.remove,Collection.remove, removeAll,retainAll和clear 操作。它不支持 添加或添加所有操作。
看看: http://java.sun.com/javase/6/docs/api/java/util/HashMap.html
欢呼声, 耶尔