2011-01-21 62 views
6

Cách trả lại nhiều giá trị từ một hàm trong Java? Bất cứ ai có thể cung cấp mã mẫu để làm điều này bằng cách sử dụng bộ dữ liệu? Tôi không thể hiểu khái niệm về bộ dữ liệu.Trả về nhiều hơn một giá trị từ một hàm trong 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; 
     } 
    } 
} 

sai lầm trong đoạn code trên là gì?

+2

Java không có bộ dữ liệu. Nếu bạn thích chúng, hãy chuyển sang Scala. –

+0

có thể trùng lặp của [Làm thế nào để trả về nhiều đối tượng từ một phương pháp Java?] (Http://stackoverflow.com/questions/457629/how-to-return-multiple-objects-from-a-java-method) –

+0

tôi luôn luôn sử dụng HashMap cho nó. Bạn có thể đặt bất cứ điều gì bạn muốn, keyed bởi sự lựa chọn của bạn của tên. giống như một lô – kommradHomer

Trả lời

1

Bạn không thể trả lại nhiều giá trị.

Bạn có thể trả lại mảng, Bộ sưu tập nếu đáp ứng mục đích của bạn.

Lưu ý: Nó sẽ là một giá trị, tham chiếu đến đối tượng [mảng, bộ sưu tập] của bạn sẽ trở lại.

4

Tạo lớp chứa nhiều giá trị bạn cần. Trong phương thức của bạn, trả về một đối tượng là một thể hiện của lớp đó. Thì đấy!

Bằng cách này, bạn vẫn trả về một đối tượng. Trong Java, bạn không thể trả về nhiều hơn một đối tượng, bất kỳ thứ gì có thể.

+1

Để chính xác, bạn trả về _reference_ cho một đối tượng. –

1

Bạn có thể trả về một mảng từ một hàm java:

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

Vẫn chỉ là một đối tượng (hoặc tham chiếu đến nó ...). Câu trả lời là 'không', nhưng bạn có thể trả về một mảng, một bộ sưu tập hoặc một đối tượng tùy chỉnh gói gọn nhiều đối tượng. –

1

Bạn không thể trả về nhiều hơn một giá trị trong java (mà không phải là python). Viết phương thức chỉ trả về mảng hoặc danh sách hoặc bất kỳ đối tượng nào khác như thế này

2

Đây có phải là những gì bạn đang tìm kiếm không?

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

Điều gì sẽ xảy ra nếu bạn quay trở lại có nhiều loại dữ liệu khác nhau giống như tình huống của bạn. Hoặc ví dụ, Cho phép nói rằng bạn đang trả về một tên chuỗi và một số nguyên tuổi. Bạn có thể bạn JSON từ thư viện org.json. Bạn có thể lấy jar tại 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 ; 
} 

Sau đó, nếu bạn muốn để có được các dữ liệu ở đâu đó trong chương trình của bạn, đây là những gì bạn làm:

//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 

Hy vọng bạn thử nó. Hoặc bạn có thể đọc thêm về JSON trong java nếu bạn KHÔNG HÃY.

Các vấn đề liên quan