gpt4 book ai didi

java - HashMap 键具有多个值

转载 作者:行者123 更新时间:2023-12-02 00:32:15 24 4
gpt4 key购买 nike

我正在尝试绑定(bind)一些索引,它们是相应的字符串,所以我尝试使用 HashMap,如下所示:

public class NewClass {
static List<String> referenceList = new ArrayList<String>();

public static void main(String[] args) {

String x = "AGE_X";
String y = "AGE_Y";
//String w = "AGE_Z";
referenceList.add(x);
referenceList.add(y);

String text1 = "if ( AGE_X = = 10 ){\r\n"
+ " j = 1;"
+ " AGE_X = 5 ;"
+ " if ( true ) {"
+ " m = 4 / AGE_Y ;"
+ " }"
+ " }";
detectEquals(text1);
}

public static String detectEquals(String text) {
String a = null;
// text = TestSplitting.addDelimiters(text);
String[] newString = text.split(" ");
List<String> test = Arrays.asList(newString);
StringBuilder strBuilder = new StringBuilder();
HashMap<String, List<Integer>> signs = new HashMap<String, List<Integer>>();
List<Integer> refList = new ArrayList<Integer>();
int index = 0;

for (int i = 0; i < test.size(); i++) {
a = test.get(i).trim();
//System.out.println("a=" + a);
strBuilder.append(a);
index = strBuilder.length() - a.length();

if (a.equals("if") || a.equals("=")) {
refList.add(index);
// System.out.println(refList);
signs.put(a, refList);
refList = new ArrayList<Integer>();

System.out.println(signs);
}
}
return a;
}
}

但我没有任何运气。我试图从该字符串(text1)中获取每个“if”和“=”并将它们映射在一起,但似乎我做错了什么,因为我的输出如下所示:

{if=[0]}

{if=[0], ==[8]}

{if=[0], ==[9]}

{if=[0], ==[15]}

{if=[0], ==[23]}

{if=[26], ==[23]}

{if=[26], ==[36]}

我正在寻找类似的东西:

if=[0,26] and = =[8,9,15,23,23,36]

我需要一些帮助来找出我在哪里犯了错误?或者我只是没有正确打印它们?任何帮助将不胜感激。

谢谢,

丹尼尔

最佳答案

听起来你想要一个 multimap - 我建议您使用Guava及其 Multimap 的实现界面,这样您就不必重新发明轮子:)

我不太清楚您要做什么,但您现有的代码总是在将旧列表的引用放入 map 中之后创建一个新列表...我不知道不知道你为什么这么做。我希望得到更多类似的东西:

  • 检查a是否已作为 map 中的键存在
    • 如果是,则获取值(现有列表)并向其中添加 index
    • 如果没有,请创建一个新列表,将其放入 map 中,并向其中添加 index

关于java - HashMap 键具有多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8713253/

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