Как Сделать Конструктор Для Объекта Содержащий Другой Объект - Массив

Тема в разделе "Java", создана пользователем SimpleGirl, 8 фев 2014.

  1. SimpleGirl

    SimpleGirl New Member

    Регистрация:
    8 фев 2014
    Сообщения:
    4
    Симпатии:
    0
    Добрый день! скажите пожалуйста я правильно делаю конструктор для объекта содержащий другой объект массив, например конструктор класса Disc

    public Disc(int Num, String Title, int [] renter){

    this.Disc_Num = Num;
    this.Disc_Title = Title;
    this.Disc _Renter = renter; вот здесь, правильно ли я строю коструктор для массива?
    }
     
  2. bybyby

    bybyby New Member

    Регистрация:
    8 фев 2014
    Сообщения:
    2
    Симпатии:
    0
    Как раз хотел сохдать такую же тему, а здесь уже есть. Так может кто знает, очень нужно.
     
  3. LuMee

    LuMee Well-Known Member

    Регистрация:
    2 май 2006
    Сообщения:
    477
    Симпатии:
    0
    Массивы в конструктор передаются точно так же, как и значения любых других типов:
    Код (Text):
    public MyClass {
    private int id;
    private int[] values;

    public MyClass(int id, int[] values) {
    this.id = id;
    this.values = values;
    }
    }
    И потом где-то в коде:
    Код (Text):
    int i = 10;
    int[] vals = new int[] { 1, 2, 3 };
    MyClass obj = new MyClass(i, vals);
    Естественно, следует понимать, что в этом коде vals и obj.values ссылаются на один и тот же массив. Если такое поведение нежелательно, то в конструкторе MyClass надо создавать новый массив и копировать в него значения из переданного.
     
  4. SimpleGirl

    SimpleGirl New Member

    Регистрация:
    8 фев 2014
    Сообщения:
    4
    Симпатии:
    0
    Подскажите пожалуйста а как отсортировать массив обектов не по String а по числам и в обратном порядке



    public static void main (String[] args) throws IOException
    {
    Client ourClients[] = new Client[10];
    ourClients[0] = new Client(1, "Nina", 3);
    ourClients[1] = new Client(2, "Stephane", 1);
    ourClients[2] = new Client(3, "Natalya", 1);
    ourClients[3] = new Client(2, "Julie", 2);
    Arrays.sort(ourClients, new Comparator<Client>()
    {
    private Collator collator = Collator.getInstance();

    @Override
    public int compare (Client o1, Client o2)
    {
    return o1 == null || o2 == null ? 1 : collator.compare(o1.getName(), o2.getName());
    }
    });
    for (Client client : ourClients) {
    System.out.println(client);
    }
    }
     
  5. LuMee

    LuMee Well-Known Member

    Регистрация:
    2 май 2006
    Сообщения:
    477
    Симпатии:
    0
    Если прямо код написать, будет, наверное, неинтересно. Поэтому намекну: сортировкой управляет метод compare объекта-компаратора, который вторым параметром в Arrays.sort передается. Метод этот должен вернуть отрицательное значение, если o1 "меньше" o2, положительное - если "больше", ноль - если "равны". Итого: берем у сравниваемых объектов нужные "числа" (какое из двух, кстати?), сравниваем между собой и возвращаем то, что нужно (см. выше). Вроде, достаточно толсто намекнул :).
     
Загрузка...

Поделиться этой страницей