我想检查每一行的第一个元素(左侧)中的所有匹配元素,如果匹配,则获取它旁边的元素。
以下是我的例子:
ArrayList<String> variables = new ArrayList<String>();
ArrayList<String> attribute = new ArrayList<String>();
String[][] sample = { {"hates", "hates"},
{"p1","boy"},
{"p2","girl"},
{"hatesCopy", "hatesCopy"},
{"p2","boy"},
{"p1","girl"}};
for(int a = 0; a < sample.length; a++){
for(int b = 0; b < sample.length; b++){
if(sample[b].equals(sample[a])){
variables.add(sample[b][0]);
attribute.add(sample[b][1]);
}
}
}
System.out.println("variables stored: "+ variables);
System.out.println("attributes stored: "+ attribute);
我试图比较2d数组中每一行的第一个元素,以检查是否存在匹配元素,但它不能按照我想要的方式工作。
变量和属性数组应输出:
variables stored: [p1, p1, p2, p2]
attribute stored: [boy, girl, girl, boy]
第一个元素“p1”是样本2d数组中“boy”旁边的值。
但相反,我的代码决定输出错误的2D数组的整个内容:
variables stored: [hates, p1, p2, hatesCopy, p2, p1]
attribute stored: [hates, boy, girl, hatesCopy, boy, girl]
此外,行的长度会有所不同,但列的大小始终为2。 关于我哪里出错的任何想法?
答案 0 :(得分:1)
您正在检查自己的元素。只有"hates"
和"hatesCopy"
的一个副本,但它们与自己匹配。
要防止自我匹配,请添加条件以确保a
不等于b
。
if(a != b && sample[b][0].equals(sample[a][0])){