int [] []数组的所有可能组合

时间:2018-12-03 18:09:05

标签: java arrays combinations

我试图仅获取不同的坐标,这意味着坐标$(document).ready(function () { var navListItems = $('div.setup-panel div a'), allWells = $('.setup-content'), allNextBtn = $('.nextBtn'); allWells.hide(); navListItems.click(function (e) { e.preventDefault(); var $target = $($(this).attr('href')), $item = $(this); if (!$item.hasClass('disabled')) { navListItems.removeClass('btn-primary').addClass('btn-default'); $item.addClass('btn-primary'); allWells.hide(); $target.show(); $target.find('input:eq(0)').focus(); } }); allNextBtn.click(function(){ var curStep = $(this).closest(".setup-content"), curStepBtn = curStep.attr("id"), nextStepWizard = $('div.setup-panel div a[href="#' + curStepBtn + '"]').parent().next().children("a"), curInputs = curStep.find("input[type='text'],input[type='url']"), isValid = true; $(".form-group").removeClass("has-error"); for(var i=0; i<curInputs.length; i++){ if (!curInputs[i].validity.valid){ isValid = false; $(curInputs[i]).closest(".form-group").addClass("has-error"); } } if (isValid) nextStepWizard.removeAttr('disabled').trigger('click'); }); $('div.setup-panel div a.btn-primary').trigger('click'); }); (6,7)是相同的。我怎样才能遍历数组并仅获得不同的坐标?因此,基本上我需要来自(7,6)数组的所有坐标组合。

int[][]

我想要的输出:

ArrayList<Coords> coordinateList = new ArrayList<>();
int[][] coordinates = { {56,80}, {32,26}, {47,85}, {3,4}, {10,19}};


public void findDistinct(int[][] coordinates){
    for (int i = 0; i < coordinates.length; i++) {
        for (int j = 0; j < coordinates.length - 1 ; j++) {
            if (i == j) continue;
            Coords coords = new Coords(i, j);
            if(! coordinateList.contains(coords)){
                coordinateList.add(coords);
            }
        }
    }
    for(Coords coords: coordinateList){
        System.out.println(coords);
    }
}


public class Coords{

    private final x;
    private final y;

    public Coords(x,y) {
        this.y = y;
        this.x = x;
    }

    @Override
    public String toString() {
        return "Coords{" +
                "x=" + x +
                ", y=" + y +
                '}';
    }
}

但是现在我得到了所有可能的坐标变化。如何更改代码以获得所需的结果?

2 个答案:

答案 0 :(得分:1)

for (int j = 0; j < coordinates.length; j++) 

应该是

for (int j = i + 1; j < coordinates.length; j++)

这样,您也不再需要检查if (i == j)

答案 1 :(得分:1)

coordinateList.contains(coords)将检查obj哈希码是否匹配。如果要包含用于检查两个对象的坐标是否匹配的方法,则可以实现哈希码和类坐标的equals方法。

由于您需要唯一的坐标列表,因此考虑使用Set数据结构而不是list,因为contains是费用操作