如何在java中返回2个ArrayList

如何在java中返回2个ArrayList,java,class,reference,return,keyvaluepair,Java,Class,Reference,Return,Keyvaluepair,我需要创建一个可以返回2ArrayLists的方法 我已经阅读了一些答案,并提出了一些选择: 返回对(arrlist1、arrlist2) 这是一个更简单的选项,但我不知道它是否有效,我也不知道如何从调用此方法的方法中的对中提取ArrayLists 尝试创建一个包含这两个数组列表的类。我不知道这是否行得通,但我认为应该行 有人知道这些选项中的任何一个是否有效,或者我是否可以使用任何其他选项吗?创建第三个arraylist,并将两个arraylist放在第三个arraylist中,然后将其返回。您

我需要创建一个可以
返回
2
ArrayLists
的方法

我已经阅读了一些答案,并提出了一些选择:

  • 返回对(arrlist1、arrlist2)

    这是一个更简单的选项,但我不知道它是否有效,我也不知道如何从调用此方法的方法中的
    对中提取
    ArrayLists

  • 尝试创建一个包含这两个
    数组列表的
    。我不知道这是否行得通,但我认为应该行


  • 有人知道这些选项中的任何一个是否有效,或者我是否可以使用任何其他选项吗?

    创建第三个arraylist,并将两个arraylist放在第三个arraylist中,然后将其返回。

    您可以使用
    java.util.Map
    作为返回类型

    示例代码:

    public Map<Integer, List> getLists() {
        Map<Integer, List> listMap = new HashMap<Integer, List>();
         List list1 = new ArrayList();
         List list2 = new ArrayList();
         // Fill your lists
    
         listMap.put(1, list1);     
         listMap.put(2, list2);
    
         return listMap;
    }
    
    
    // to get list from map
    Map<Integer, List> lists = getLists();
    
    List l1 = lists.get(1);
    List l2 = lists.get(2);
    
    publicmap getlist(){
    Map listMap=newhashmap();
    List list1=新的ArrayList();
    List list2=新的ArrayList();
    //填写你的清单
    listMap.put(1,list1);
    listMap.put(2,list2);
    返回列表图;
    }
    //从地图中获取列表
    映射列表=GetList();
    listl1=lists.get(1);
    listl2=lists.get(2);
    
    创建一个属性都为异构列表的类

    public Class MyClass
    {
       public List<> list1;
       public List<> list2;
    }
    
    公共类MyClass
    {
    公开名单1;
    公开名单2;
    }
    
    从方法返回类的新对象。如果列表是同质的,则返回一个同时包含这两者的列表。

    注意:两种解决方案都是正确的。如果你做得对,它肯定会起作用

    我将介绍如何实现您提到的每种方法

    apachecommonlangapi中有一个
    Pair
    类,从技术上讲,它不是“标准”库的一部分。你可以在下载

    Pair
    的文档是

    您可以这样使用它:

    // in the method
    public Pair<ArrayList, ArrayList> yourMethod() {
        ...
        return ImmutablePair.of(yourArrayList1, yourArrayList2);
    }
    
    // when you call the method
    Pair<ArrayList, ArrayList> pair = yourMethod();
    pair.getLeft(); // gets you the first array list
    pair.getRight(); // gets you the second array list
    
    // in the method
    public Pair<ArrayList, ArrayList> yourMethod() {
        ...
        return Pair.createPair(yourArrayList1, yourArrayList2);
    }
    
    // when you call the method
    Pair<ArrayList, ArrayList> pair = yourMethod();
    pair.getElement0(); // gets you the first array list
    pair.getElement1(); // gets you the second array list
    
    您可以这样使用它:

    // in the method
    public Pair<ArrayList, ArrayList> yourMethod() {
        ...
        return ImmutablePair.of(yourArrayList1, yourArrayList2);
    }
    
    // when you call the method
    Pair<ArrayList, ArrayList> pair = yourMethod();
    pair.getLeft(); // gets you the first array list
    pair.getRight(); // gets you the second array list
    
    // in the method
    public Pair<ArrayList, ArrayList> yourMethod() {
        ...
        return Pair.createPair(yourArrayList1, yourArrayList2);
    }
    
    // when you call the method
    Pair<ArrayList, ArrayList> pair = yourMethod();
    pair.getElement0(); // gets you the first array list
    pair.getElement1(); // gets you the second array list
    
    //在方法中
    公共方法(){
    ...
    return Pair.createPair(yourArrayList 1,yourArrayList 2);
    }
    //当您调用该方法时
    Pair Pair=yourMethod();
    pair.getElement0();//获取第一个数组列表
    pair.getElement1();//获取第二个数组列表
    
    第三个选项是创建一个类,该类在两个
    数组列表的相应索引中保存一对元素。例如,如果一个
    ArrayList
    包含姓名,而第二个
    ArrayList
    包含生日,则可以创建一个包含姓名和生日的类。现在创建一个带有新类实例的
    ArrayList


    此解决方案取决于两个
    ArrayList
    s的数据之间的关系。如果数据没有我的姓名和生日示例那样密切相关,那么这种类型的解决方案可能不合适。

    我必须为增量调试实现相同的双ArrayList

    我将私有变量与getter和setter以及一个构造函数一起使用,该构造函数使用构造函数中的长度初始化ArrayList

    这是我的类(它是私有的,因为它位于使用它的更大类的内部):

    私有类增量段{
    私人ArrayList三角洲;
    私人ArrayList nablas;
    增量段(int dSize、int nSize){
    增量=新阵列列表(dSize);
    nablas=新阵列列表(nSize);
    }
    公共阵列列表getDeltas(){
    返回三角洲;
    }
    公共阵列列表getNablas(){
    返回纳布拉斯;
    }
    公共无效集合三角洲(阵列列表三角洲){
    三角洲=_三角洲;
    }
    公共无效设置(ArrayList _nablas){
    纳布拉斯=_纳布拉斯;
    }
    }
    
    下面是我如何实例化它的:

    private DeltaSegments getDeltaSegments(String str, int segments) {
    
        ArrayList<String> deltas = new ArrayList<String>(segments);
        ArrayList<String> nablas = new ArrayList<String>(segments);
    
        // ... Add data to deltas/nablas here ... //
    
        DeltaSegments ds = new DeltaSegments(segments, segments);
        ds.setDeltas(deltas);
        ds.setNablas(nablas);
        return ds;
    }
    
    private DeltaSegments getDeltaSegments(字符串str,int段){
    ArrayList Delta=新的ArrayList(段);
    ArrayList nablas=新的ArrayList(段);
    //…在此处向Delta/nablas添加数据//
    DeltaSegments ds=新的DeltaSegments(段,段);
    三角洲(三角洲);
    D.塞特纳布拉斯(纳布拉斯);
    返回ds;
    }
    
    要稍后访问它们,请执行以下操作:

    DeltaSegments ds = getDeltaSegments(failingLine, n);
    ArrayList<String> deltas = ds.getDeltas();
    ArrayList<String> nablas = ds.getNablas();
    
    DeltaSegments ds=getDeltaSegments(failingLine,n);
    ArrayList deltas=ds.getDeltas();
    ArrayList nablas=ds.getNablas();
    

    希望这有帮助

    类应该可以工作。只要阅读文档,就可以学习如何使用它。@4castle我已经开始使用第二个选项,你认为这也行吗?第二个选项也行,但是你基本上只是重新创建了
    Pair
    类。为什么你有两个ArrayList?这两份清单包含哪些内容?数据是否以某种方式相关?它们是平行列表吗?如果是这种情况,那么您可以创建一个包含两条相关信息的类,然后创建一个包含这个新类的对象的ArrayList。public static void main(String[]args){ArrayList outer=new ArrayList();ArrayList inner=new ArrayList();inner.add(100);inner.add(200);outer.add(内部);outer.add(内部);System.out.println(外部);}@Agam您应该编辑您的问题,以便正确格式化代码。