Вопрос

Я привык работать с PHP, но в последнее время я работаю с Java, и у меня болит голова, пытаясь разобраться в этом.Я хочу сохранить это представление в Java:

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"] 
                          )
)

Есть ли чистый способ (т.никакого грязного кода), чтобы сохранить эту штуку на Java?Примечание;Я хотел бы использовать строки в качестве индексов массивов (в первом измерении), и я не знаю определенного размера массивов.

Это было полезно?

Решение

Вы можете использовать Карту и Список (оба интерфейса реализованы более чем одним способом, чтобы вы могли выбрать наиболее подходящий в вашем случае).

Для получения дополнительной информации ознакомьтесь с руководствами по карта и Список и, возможно, вам стоит начать с Коллекции руководство.

Пример:

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для внутренних списков.

Если вам нужен чистый код, похожий на 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"));
}};

Вы хотите карта, которые управляются чем угодно. Хэшмапв большинстве случаев работает.

Что-то вроде этого.

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);

Если вы хотите чего-то более простого, Commons-Lang в библиотеке есть Мультикарта.

Имейте в виду, что Вектор — это устаревший код для платформы Collections.Он синхронизирует доступ к своим элементам, что замедляет производительность.В большинстве случаев использования List не требуется такого рода потокобезопасность, и даже если бы вы это сделали, я был бы более склонен использовать КопироватьонзаписьArrayList.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top