繁体   English   中英

使用Java中的给定集合创建具有正值和负值的数组列表

[英]Creating a list of arrays with positive and negative values from given set in 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个负值时,它可以工作。 我使用了两个for循环,如下所示

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;
    }
}

看看是否可以帮助您。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM