簡體   English   中英

Java中的多維數組。 這么復雜嗎?

[英]Multi-dimensional array in Java. Is it that complex?

我基本上是一個php程序員,現在只是想在Java的海岸上徘徊(或徘徊!)。 當然是救生艇,stackoverflow。

我正在努力在Java中制作多維數組,就像在php中那樣,完全有可能$array["bla"]["blabla"]["blablabla"]...

這是我想要實現的

Array
(
    [user] => UserName
    [groups] => Array
        (
            [0] => group1
            [1] => group2
            [2] => group3
        )

    [categories] => Array
        (
            [0] => category1
            [1] => category2
            [2] => category3
        )

    [notification] => user notification string
    [departments] => Array
        (
            [0] => department1
            [1] => department2
            [2] => department3
            [3] => department4
        )

    [sub-deptmnt] => Array
        (
            [department1] => Array
                (
                    [0] => subdep1
                    [1] => subdep2
                )

            [department2] => Array
                (
                    [0] => another-subdep1
                    [1] => another-subdep2
                    [2] => another-subdep3
                )

        )

)

在PHP中

$array["user"] = "UserName";
$array["groups"] = array("group1","group2","group3");
$array["categories"] =array("category1","category2","category3");
$array["notification"] = "user notification string";
$array["departments"] = array("department1","department2","department3","department4");
$array["sub-deptmnt"] = array("department1" => array("subdep1","subdep2"),"department2"=> array("another-subdep1","another-subdep2", "another-subdep3"));

有人請幫助我繼續前進..

編輯:使用php示例來闡明所需的數組

Java中這樣的代碼的優良作法是不要為此使用無類型的數組,而要制作實際的有類型的對象:

class Whatever {
  private final String username;
  private final List<Group> groups;
  ...
}
class Group {
  ...
}

像這樣定義你的對象

    class SampleModel{

        String userName;
        List<String> groups  ;
        List<String> categories;
        String notification;
        List<String> departments;
        Map<String,List<String>> sub_deptmnt;

        //getter and setter 
    } 

如果您提前知道鍵將是什么,那么最好以Prabhakaran向您顯示的方式設置帶有字段和getter / setter方法的類。

但是,如果鍵可以是動態的:與PHP關聯數組等效的是Map<String,Object>

Map<String,Object> arr = new HashMap<String,Object> ();

然后創建一個數組元素:

arr.put ("user", userName);

並獲取它:

String userName = (String)(arr.get ("user"));

您可以將數組元素設置為數組, ArrayList或其他Map<String,Object>映射,以獲取多維數組。 事實是,Java是強類型的,這意味着get方法將返回一個Object,並且您必須將其強制轉換為期望的類型:

String[] categories = (String[])(arr.get ("categories"));

要么

ArrayList<String> categories = (ArrayList<String>)(arr.get ("categories"));

如果先前為“類別”存儲的對象的類型錯誤,則將引發異常。

如果沒有其他問題,您至少應該研究一下collections教程 ,因為您絕對需要了解它是否可以使用Java。

[注意:我尚未測試以上任何代碼。 我想我做對了。]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM