比较2D数组中每行的第一个元素

时间:2014-02-26 17:53:26

标签: java arrays

我想检查每一行的第一个元素(左侧)中的所有匹配元素,如果匹配,则获取它旁边的元素。

以下是我的例子:

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。 关于我哪里出错的任何想法?

1 个答案:

答案 0 :(得分:1)

您正在检查自己的元素。只有"hates""hatesCopy"的一个副本,但它们与自己匹配。

要防止自我匹配,请添加条件以确保a不等于b

if(a != b && sample[b][0].equals(sample[a][0])){