【问题标题】:Return more than one value from a function in Java从 Java 中的函数返回多个值
【发布时间】:2011-06-12 23:54:14
【问题描述】:

如何从 Java 中的函数返回多个值? 任何人都可以提供使用元组执行此操作的示例代码吗? 我无法理解元组的概念。


public class Tuple{
    public static void main(String []args){
        System.out.println(f());
    }
    static Pair<String,Integer> f(){
        return new Pair<String,Integer>("hi",3);
    }
    public class Pair<String,Integer> {
        public final String a;
        public final Integer b;

        public Pair(String a, Integer b) {
            this.a = a;
            this.b = b;
        }
    }
}

上面的代码有什么错误?

【问题讨论】:

  • Java 没有元组。如果你喜欢它们,请切换到 Scala。
  • 我总是使用 HashMap。你可以放任何你想要的东西,用你选择的名字作为关键字。它就像一个批次

标签: java tuples return-type


【解决方案1】:

您不能返回多个值。

如果满足你的目的,你可以返回 Array,Collection。

注意:这将是一个值,将返回对您的 Object[of array,collection] 的引用。

【讨论】:

    【解决方案2】:

    创建一个包含您需要的多个值的类。在您的方法中,返回一个作为该类实例的对象。瞧!

    这样,您仍然返回 一个 对象。在 Java 中,您不能返回超过 一个 的对象,无论它是什么。

    【讨论】:

    • 准确地说,你返回一个对象的引用
    【解决方案3】:

    您可以从 java 函数返回一个数组:

       public static int[] ret() {
          int[] foo = {1,2,3,4};
          return  foo;
       }   
    

    【讨论】:

    • 仍然只有一个对象(或引用它......)。答案是否定的,但您可以返回数组、集合或封装多个对象的自定义对象。
    【解决方案4】:

    您不能在 java 中返回多个值(不是 python)。编写一个只返回数组或列表或任何其他类似对象的方法

    【讨论】:

      【解决方案5】:

      这是你要找的吗?

      public class Tuple {
          public static void main(String[] args) {
              System.out.println(f().a);
              System.out.println(f().b);
          }
      
          static Pair<String, Integer> f() {
              Tuple t = new Tuple();
              return t.new Pair<String, Integer>("hi", 3);
      
          }
      
          public class Pair<String, Integer> {
              public final String a;
              public final Integer b;
      
              public Pair(String a, Integer b) {
                  this.a = a;
                  this.b = b;
              }
          }
      }
      

      【讨论】:

        【解决方案6】:

        如果您返回的数据类型与您的情况一样,该怎么办。或者例如,假设您要返回一个字符串名称和一个整数年龄。您可以从 org.json 库中获取 JSON。你可以在 http://www.java2s.com/Code/Jar/j/Downloadjavajsonjar.htm

        public JSONObject info(){
             String name = "Emil";
             int age = 25;
             String jsonString  ="{\"name\":\""+ name+"\",\"age\":"+ age +"}";
             JSONObject json = new JSONObject(jsonString);
             return json ;
        }
        

        之后,如果您想在程序中的某处获取数据,您可以这样做:

        //objectInstanceName is the name of the instantiated class
        JSONObject jso = objectInstanceName.info();
        String name = jso.getString("name");
        int age = jso.getInt("age");
        System.out.println(name + " is "+ age + " years old");
        
        //Output will be like
        Emil is 25 years old
        

        希望您尝试一下。或者,如果您还没有,您可以阅读更多关于 Java 中 JSON 的信息。

        【讨论】:

          猜你喜欢
          • 2018-01-01
          • 2012-09-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-04-29
          • 1970-01-01
          • 1970-01-01
          • 2015-02-16
          相关资源
          最近更新 更多