2013-03-26 120 views
0

所以......我今天剛剛看到Java的Web,我已經在工作中有一個巨大的項目。我習慣於PHP和C++,所以我沒有太多的麻煩學習這種語言,但我堅持在這個問題。設置並閱讀多維數組

我有在該格式多維數組無效:

array("data" => array ("Name" => "John", "Age" => "16")) 

我的問題是:

如何設置我的方法來接受這種陣列(上圖),以及如何我可以讀取多維數組(波紋管)嗎?

例如爲:

public void getArray(String[] data) { println(data["data"]["Name"]; } 

-

getArray(array("data" => array("Name" => "John", "Age" => "16"))); 

// to returns: 'John' 

-

實驗值:很抱歉,如果這是一個愚蠢的問題,我真的沒有在Java中的任何知識。我要去學習,但知道我真的需要回答這個問題。

在此先感謝。

回答

2

PHP的數組實際上並不是數組,它們是hash tables。 Java的版本是HashMap

HashMap<String, String> data = new HashMap<String, String>(); 
data.put("Name", "John"); 
// etc. 
System.out.println(data.get("Name")); 

你也應該看看成類,因爲這非PHP程序員通常怎麼做這樣的事情:

class Person { 
    private String name; 
    private int age; 

    public Person(String name, int age) { 
     this.name = name; 
     this.age = age; 
    } 

    public String getName() { 
     return this.name; 
    } 

    // etc. 
} 

然後:

class SomeClass { 
    public static void main(String[] args) { 
     Person person = new Person("John", 16); 
     HashMap<String, Person> people = new HashMap<String, Person>(); 
     people.put(person.getName(), person); 
    } 
} 

類可以讓事情變得簡單得多對於大型項目,因爲它們可以做的不僅僅是持有價值:

class Person { 
    private String firstName; 
    private String lastName; 

    public Person(String firstName, String lastName) { 
     this.firstName = firstName; 
     this.lastName = lastName; 
    } 

    /** 
    * Returns a person's full name (first and last name), without 
    * storing it as a seperate variable internally. 
    */ 
    public String getName() { 
     return this.firstName + " " + this.lastName; 
    } 

    public String getFirstName() { 
     return this.firstName; 
    } 

    // etc. 
} 

另外,你會得到類型安全。在編譯時找出問題要好得多,因爲在部署應用程序之前而不是之後可以解決它們。

0

當我使用一個多維數組我做的是財產以後這樣的:

public class SayHello 
{ 

public String[][] test; 

public void Main(String[] args) 
{ 
    SayHello test = new SayHello(); 
    test.test = new String[4][4]; 
    test.testMethod(test.test); 
} 

private void testMethod(String[][] array) 
{ 
for(int i = 0; i<array.length;i++) { 
    for(int x = 0;x<array[i].length;x++) { 
    System.out.println(array[i][x]); 
    } 
} 
    System.out.println(array[0][1]); 
} 
} 

我跳這個可以幫助你有點