【问题标题】:Function with multiple outputs in Java [duplicate]Java中具有多个输出的函数[重复]
【发布时间】:2012-02-01 09:25:45
【问题描述】:

如何创建具有多个输出的 JAVA 函数? 比如:

private (ArrayList<Integer[]>, int indexes) sortObjects(ArrayList<Integer[]> arr) {
//...
}

【问题讨论】:

  • 多输出是什么意思?你指的是返回值吗?如果是这种情况,您应该创建一个新类,并将您的数组列表、int 索引和您想要的任何其他内容放在那里。然后修改函数以返回您新创建的类。
  • 使用 HashMap 怎么样?

标签: java


【解决方案1】:

Java 不像 Python - 没有元组。您必须创建一个对象并将所有输出包装到其中。另一种解决方案可能是某种集合,但我认为前者意味着更好的封装。

【讨论】:

【解决方案2】:

在某些情况下,可以使用方法参数来处理结果值。在您的情况下,部分结果是一个列表(可能会被破坏性地更新)。因此,您可以将方法签名更改为以下形式:

private int sortObjects(ArrayList<Integer[]> input, ArrayList<Integer[]> result) {
   int res = 0;
   for (Integer[] ints : input) {
     if (condition(ints) {
       result.add(calculatedValue);
       res++
     }
   }
   return res;
}

【讨论】:

    【解决方案3】:

    你不能,你可以

    • 创建包装返回对象
    • 创建多个函数

    【讨论】:

      【解决方案4】:

      使用对象作为返回值。

      class SortedObjects { private ArrayList<Integer[]> _first; int _indexes; ...getter/setter/ctor... }
      
      private SortedObjects sortObjects(ArrayList<Integer[]> arr) { ... }
      

      【讨论】:

        【解决方案5】:

        你不能。

        简单的解决方案是返回一个对象数组。更健壮的解决方案是创建一个类来保存响应,并使用 getter 从代码返回的响应对象中获取各个值。

        【讨论】:

          【解决方案6】:

          你必须为你需要的每条信息创建一个包含成员变量的类,并返回该类的一个对象。

          【讨论】:

            【解决方案7】:

            另一种方法是使用包装集合的对象。

            class SortableCollection {
                final List<Integer[]> tables = ...
                int indexes = -1;
            
                public void sortObjects() {
                    // perform sort on tables.
                    indexes = ...
                }
            }
            

            由于它对可变对象进行操作,因此没有参数或返回值。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-06-18
              • 2020-03-15
              • 1970-01-01
              • 2015-12-04
              • 2013-05-06
              • 1970-01-01
              相关资源
              最近更新 更多