Подтвердить что ты не робот

ArrayList из строковых массивов

Я хотел бы сделать что-то вроде этого:

private ArrayList<String[]> addresses = new ArrayList<String[3]>();

Это не похоже на работу. Какой самый простой способ хранения нескольких адресов с 3 полями на адрес в массиве без создания отдельного класса для него?

4b9b3361

Ответ 1

Используйте второй ArrayList для 3 строк, а не примитивный массив. Т.е..
private List<List<String>> addresses = new ArrayList<List<String>>();

Затем вы можете:

ArrayList<String> singleAddress = new ArrayList<String>();
singleAddress.add("17 Fake Street");
singleAddress.add("Phoney town");
singleAddress.add("Makebelieveland");

addresses.add(singleAddress);

(Я думаю, некоторые странные вещи могут произойти с типом стирания здесь, но я не думаю, что это должно иметь значение здесь)

Если вы настроены на использование примитивного массива, для получения вашего примера требуется только незначительные изменения. Как объяснено в других ответах, размер массива не может быть включен в декларацию. Поэтому изменение:

private ArrayList<String[]> addresses = new ArrayList<String[3]>();

к

private ArrayList<String[]> addresses = new ArrayList<String[]>();

будет работать.

Ответ 2

List<String[]> addresses = new ArrayList<String[]>();
String[] addressesArr  = new String[3];

addressesArr[0] = "zero";
addressesArr[1] = "one";
addressesArr[2] = "two";

addresses.add(addressesArr);

Ответ 3

Я бы не использовал массивы. Они являются проблематичными по нескольким причинам, и вы не можете объявить их в терминах определенного размера массива в любом случае. Попробуйте:

List<List<String>> addresses = new ArrayList<List<String>>();

Но, честно говоря, для адресов я бы создал класс для их моделирования.

Если вы будете использовать массивы, это будет:

List<String[]> addresses = new ArrayList<String[]>();

т.е. вы не можете объявить размер массива.

Наконец, не указывайте свои типы как конкретные типы в таких случаях (например, для addresses). Используйте интерфейс, как я сделал выше. Это относится к переменным-членам, типам возврата и типам параметров.

Ответ 4

Простой и прямой способ создания ArrayList строки

    List<String> category = Arrays.asList("everton", "liverpool", "swansea", "chelsea");

Приветствия

Ответ 5

Вы не можете заставить массивы String иметь определенный размер. Вы можете сделать это:

private List<String[]> addresses = new ArrayList<String[]>();

но в этот список может быть добавлен массив любого размера.

Однако, как отмечали другие, правильная вещь здесь - создать отдельный класс, представляющий адреса. Тогда у вас будет что-то вроде:

private List<Address> addresses = new ArrayList<Address>();

Ответ 6

private List<String[]> addresses = new ArrayList<String[]>();

это будет работать defenitely...

Ответ 7

попробуйте это

ArrayList<ArrayList<String>> PriceModelList = new ArrayList<>();
    ArrayList<ArrayList<String>> PriceQtyList = new ArrayList<>();
    ArrayList<ArrayList<String>> PriceTotalList = new ArrayList<>();

    for (int i = 0; i < CustomerNames.length; i++) {
        PriceModelList.add(new ArrayList<String>());
        String[] PriceModel = {"s6", "s7", "note4", "note5", "j5", "j6"};
        for (int j = 0; j < PriceModel.length; j++) {
            PriceModelList.get(i).add(PriceModel[j]);
        }

        PriceQtyList.add(new ArrayList<String>());
        String[] PriceQut = {"12", "13", "21", "15", "43", "21"};
        for (int k = 0; k < PriceQut.length; k++) {
            PriceQtyList.get(i).add(PriceQut[k]);
        }

        PriceTotalList.add(new ArrayList<String>());
        String[] PriceTotal = {"1323", "1312321", "43123212", "43434", "12312", "43322"};
        for (int m = 0; m < PriceTotal.length; m++) {
            PriceTotalList.get(i).add(PriceTotal[m]);
        }
    }

    ArrayList<ArrayList<ArrayList<String>>> CustomersShoppingLists = new ArrayList<>();
    CustomersShoppingLists.add(PriceModelList);
    CustomersShoppingLists.add(PriceQtyList);
    CustomersShoppingLists.add(PriceTotalList);

Ответ 8

Следующие работы в Java 8..

List<String[]> addresses = new ArrayList<>();