Проблема с двумерным массивом Java - PullRequest
0 голосов
/ 06 марта 2011

Я хочу присвоить какое-то значение в двумерном массиве.

У меня есть 2 атрибута: продукт и цена.

iPad 999.9
iPod 123.4
iPhone 432.1

В 1-D массиве я знаю, как назначить значение продукта.

   String[] product = {"iPad", "iPod", "iPhone"};

Однако в двумерном массиве, если я назначу так:

String[][] array = new String[3][1];
array[0][1] = "iPad";

Как я могу присвоить число с плавающей точкой в ​​массиве?

Также у меня вопрос к сортировке.

Поскольку я объявляю тип 2D-массива как String.

Можно ли отсортировать цену с плавающей запятой по этому массиву?

Или мне нужно объявить другой массив для сортировки? Спасибо

1 Ответ

8 голосов
/ 06 марта 2011

Вы избавите себя от множества неприятностей, если будете использовать объекты вместо массивов для хранения продуктов. Например.,

class Product {
    String name;
    double price;
}

(при необходимости добавьте модификаторы доступа, сеттеры / геттеры и конструкторы)

Теперь вы можете легко получить доступ к множеству продуктов без преобразования типов.

Product[] array = new Product[3];
array[0] = new Product();
array[0].name = "iPad";
array[0].price = 123.4;

Или, если вы добавите конструктор,

    Product[] array = {
        new Product("iPad", 123.4),
        new Product("iPod", 234.5),
        new Product("iPhone", 345.6)
    };

Чтобы разрешить сортировку, вы можете реализовать интерфейс Comparable и затем вызвать Arrays.sort(myProductArray):

class Product implements Comparable<Product> {
    String name;
    double price;

    public int compareTo(Product p) {
        return ((Double) price).compareTo(p.price);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...