帮助在Java中使用递归

时间:2010-05-12 15:00:13

标签: java recursion

我有一个班级Group。在课堂上,我有两个字段idGroup IdGroupGroup。团体可能是其他团体的一部分。我的班级GroupHashMap<Integer,Integer>中定义;密钥为IdGroupGroup,值为idGroup。我想在地图上搜索特定的idGroup;我可以使用递归来做到这一点吗?

class Group
{

    int idGroupe
    String word
}

HashMap<Integer,Integer> GroupeGroupe = new HashMap<Integer,Integer>();
GroupeGroupe.put(idGroupeGroupe, idGroupe)

2 个答案:

答案 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

欢呼声, 耶尔