سؤال

أنا معتاد على العمل مع PHP ولكن في الآونة الأخيرة لقد تم العمل مع جافا و أنا أعاني من الصداع محاولة لمعرفة ذلك.أريد أن حفظ هذا التمثيل في جاوة:

Array ( 
        ["col_name_1"] => Array ( 
                               1 => ["col_value_1"], 
                               2 => ["col_value_2"], 
                               ... , 
                               n => ["col_value_n"] 
                          ),
        ["col_name_n"] => Array ( 
                               1 => ["col_value_1"], 
                               2 => ["col_value_2"], 
                               ... , 
                               n => ["col_value_n"] 
                          )
)

هل هناك وسيلة نظيفة (أيلا رمز القذرة) لإنقاذ هذا الشيء في جافا ؟ ملاحظة ؛ أود أن استخدام السلاسل كما صفيف الفهارس (في البعد الأول) و لا أعرف واضح حجم المصفوفات..

هل كانت مفيدة؟

المحلول

يمكنك استخدام خريطة وقائمة (هذه وكلاهما واجهات تنفيذها في أكثر من طريقة واحدة لتختار الأنسب في حالتك).

لمزيد من المعلومات مراجعة دروس خريطة و قائمة و ربما يجب أن تبدأ مع مجموعات البرنامج التعليمي.

على سبيل المثال:

import java.util.*;

public class Foo {
    public static void main(String[] args) {
        Map<String, List<String>> m = new HashMap<String, List<String>>();
        List<String> l = new LinkedList<String>();
        l.add("col_value_1");
        l.add("col_value_2");
        //and so on
        m.put("col_name_1",l); //repeat for the rest of the colnames

       //then, to get it you do

       List<String> rl = m.get("col_name_1");

    }
}

نصائح أخرى

حاول استخدام Map<String, List<String>>.هذا سوف يسمح لك استخدام سلاسل مفاتيح / المؤشرات في الخارجي خريطة والحصول على نتيجة كونها قائمة سلاسل القيم.ربما كنت سوف ترغب في استخدام HashMap الخارجي خريطة ArrayList's الداخلية القوائم.

إذا كنت تريد بعض نظيفة التعليمات البرمجية التي تشبه PHP أعطيته إلى تهيئة ذلك ، يمكنك أن تفعل شيئا مثل هذا:

Map<String, List<String>> columns = new HashMap<String, List<String>>() {{
    put("col_name_1", Arrays.asList("col_val_1", "col_val_2", "col_val_n"));
    put("col_name_2", Arrays.asList("col_val_1", "col_val_2", "col_val_n"));
    put("col_name_n", Arrays.asList("col_val_1", "col_val_2", "col_val_n"));
}};

تريد خريطة, التي مرتبطا فقط حول أي شيء. HashMaps تعمل في معظم الحالات.

شيء من هذا القبيل.

List<String> col1Vals = new java.util.ArrayList<String>();
col1Vals.add("col_value_1");
col1Vals.add("col_value_2");
Map<String, List<String>> map = new HashMap<String, List<String>>();
map.put("col_name_1", col1Vals);

إذا كنت تريد شيئا أكثر بساطة ، العموم لانج المكتبة MultiMap.

يكون محذر أن ناقلات هو إرث رمز مجموعات الإطار.فإنه مزامنة الوصول إلى العناصر التي يبطئ الأداء.معظم حالات الاستخدام باستخدام القائمة لا تحتاج إلى هذا النوع من سلامة الموضوع و حتى لو فعلت ستكون أكثر ميلا إلى استخدام CopyOnWriteArrayList.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top