从Java中的给定设置中创建具有正值和负值的数组列表



让我有以下设置A={1,2,3}

现在我想创建一个数组列表,使我的输出看起来像(如果我们只允许1个负值) {-1,2,3}, {1,-2,3}, {1,2,-3}

(如果仅允许2个负值) {-1,-2,3}, {-1,2,-3}, {1,-2,-3}

...等等。

到目前为止,我在有1个负值的时候尝试了,并且可以正常工作。我用两个用于以下

的循环
ArrayList<ArrayList<Integer>> outer = new ArrayList<ArrayList<Integer>>();
for (int j=0; j<neighbours.size(); j++) 
{
    outer.add(createDnf(neighbours, neighbours.get(j)));
}
protected ArrayList<Integer> createDnf(List<Integer> others, int dn) {
    ArrayList<Integer> inner = new ArrayList<Integer>();
    for (int j=0; j<others.size(); j++) {
        if(others.get(j) == dn) {
            inner.add(dn);
        } else {
            inner.add(-others.get(j));
        }
    }
    return inner;
}

此处neighbours包含与集A相同的整数列表。我如何使其适用于2个或多个负值?

谢谢!

我创建了以下片段,它仅在您需要单个负数的情况下给出重复值,否则它正常工作:

import java.util.Set;
import java.util.HashSet;
import java.util.List;
import java.util.ArrayList;
public class MyClass {
    public static void main(String args[]) {
                        ArrayList<Integer> negativeIndexList = new ArrayList<Integer>();
                        negativeIndexList.add(1);
                        negativeIndexList.add(2);
                        negativeIndexList.add(3);
                        negativeIndexList.add(4);
                        negativeIndexList.add(5);
                        System.out.println(returnPositiveNegativeArray(negativeIndexList,2));

    }
    private static ArrayList<ArrayList<Integer>> returnPositiveNegativeArray(List<Integer> inputList,int noOfNegativesInEachList)    {
        ArrayList<ArrayList<Integer>> rList = new ArrayList<ArrayList<Integer>>();
        for(int index=0;index<inputList.size();index++)    {
            for(int j=index+1;j<inputList.size();j++)    {
                ArrayList<Integer> negativeIndexList = new ArrayList<Integer>();
                negativeIndexList.add(index);
                for(int k=j;k<inputList.size();k++)   {
                if(negativeIndexList.size()<noOfNegativesInEachList)    {
                                    negativeIndexList.add(k);
                }
            }
                if(negativeIndexList.size()==noOfNegativesInEachList)    {
                    ArrayList<Integer> innerList = new ArrayList<Integer>();
                    innerList.addAll(inputList);
                    for(int negativeIndex:negativeIndexList)    {
                        innerList.set(negativeIndex,-innerList.get(negativeIndex));
                    }
                                    rList.add(innerList);
                    }

            }
        }
        return rList;
    }
}

看看它是否可以帮助您..

最新更新