Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Реализация структуры 
:(
    Опции темы
zss
Дата 29.12.2004, 09:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 708
Регистрация: 17.6.2004

Репутация: нет
Всего: 2



На сколько я знаю, в Java не существует структур. Но нужно передавать что-то вроде ее в методы класса.
Я так понимаю, что необходимо ее реализовывать в виде класса. А больше нет способов ?

Просто встает вопрос в открытости членов. Одним из полей должен быть двумерный массив. Если делать этот член закрытим, то чтение и запись можно будет осуществить только методами, что усложняет код (и как мне кажется замедляет).
PM MAIL ICQ   Вверх
Domestic Cat
Дата 29.12.2004, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Цитата(zss @ 29.12.2004, 00:00)
в Java не существует структур.


Не существует.


Цитата(zss @ 29.12.2004, 00:00)
Я так понимаю, что необходимо ее реализовывать в виде класса.


Типа того.


Цитата(zss @ 29.12.2004, 00:00)
А больше нет способов ?


Нет.


Цитата(zss @ 29.12.2004, 00:00)
Если делать этот член закрытим, то чтение и запись можно будет осуществить только методами, что усложняет код (и как мне кажется замедляет).


1. Замедляет, но ничтожно.
2. Что мешает сделать его паблик:
Код

class MyClass
{
      public int[][] array = new int[5][55];
      // и т п
}

// ....
MyClass myClass = new MyClass();
// ...
myClass.array[1][5] = 33;



--------------------

PM   Вверх
Се ля ви
Дата 29.12.2004, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java/SOAрхитектор
****


Профиль
Группа: Модератор
Сообщений: 2016
Регистрация: 5.6.2004
Где: place without tim e and space

Репутация: 8
Всего: 127



так сделай его public и наплюй на инкапсуляцию, если скорость так уж важна. Но вообще это не хорошо, ИМХО, лучше писать классы через JavaBeans, а синтаксис...

А в чём принципиальная разница - obj.array1[x][y] и obj.array1(x,y) ?

Это сообщение отредактировал(а) Се ля ви - 29.12.2004, 09:49


--------------------
  )
 (
[_])
проф. блог

Кролики думали, что занимаются любовью, а на самом деле их просто разводили...
PM MAIL WWW Skype GTalk   Вверх
Sun
Дата 29.12.2004, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Account removed
***


Профиль
Группа: Экс. модератор
Сообщений: 1611
Регистрация: 14.8.2002

Репутация: 8
Всего: 48



Цитата
А в чём принципиальная разница - obj.array1[x][y] и obj.array1(x,y) ?

В первом случае обращение к элементу массива "obj.array1[x][y] " а во втором вызов метода "obj.array1(x,y)".


--------------------
Account removed
PM MAIL   Вверх
zss
Дата 29.12.2004, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 708
Регистрация: 17.6.2004

Репутация: нет
Всего: 2



Это все понятно. Ну допустим можно реализовать класс. А что если нужно реализовать что-то вроде списка в классе. Если бы были указатели, то все понятно, а как быть в Java. Или есть стандаотные способы ?
PM MAIL ICQ   Вверх
Domestic Cat
Дата 29.12.2004, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



В Java все (кроме примитивов) - указатели. ИМО стоит почитать книжки.


--------------------

PM   Вверх
zss
Дата 29.12.2004, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 708
Регистрация: 17.6.2004

Репутация: нет
Всего: 2



Цитата(Domestic @ 29.12.2004, 16:33)
В Java все (кроме примитивов) - указатели. ИМО стоит почитать книжки.


Ну просто защибись. Только что прочитал почти до конца Чарли Калверта, который явно говорил, что разаработчики Java отказались от явных указателей из-за большего количества ошибок при работе с ними.

Так кому верить?

PM MAIL ICQ   Вверх
Domestic Cat
Дата 29.12.2004, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Цитата
Только что прочитал почти до конца Чарли Калверта, который явно говорил, что разаработчики Java отказались от явных указателей из-за большего количества ошибок при работе с ними.


Все "ссылки" в Java яваляюся указателями, хотяс ними нельзя делать то что с обычными поинтерами - дереференсинг и пр.


--------------------

PM   Вверх
zss
Дата 29.12.2004, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 708
Регистрация: 17.6.2004

Репутация: нет
Всего: 2



Так про это и говорю. Естественно что у объекта в памяти есть адрес, но им нельзя оперировать. Так как реализовать списки (или что-то вроде динамического массива без потери данных). Необходимо по мере возможности добавлять записи...
PM MAIL ICQ   Вверх
Domestic Cat
Дата 29.12.2004, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Есть пакет java.util, в нем
http://java.sun.com/j2se/1.4.2/docs/api/ja...LinkedList.html


--------------------

PM   Вверх
xaoc2
Дата 30.12.2004, 00:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 22.10.2004

Репутация: нет
Всего: нет



Незнаю, подойдёт ли для этого случая.
Вот несколько закрученый пример из книги Thinking In Java (Bruce Eckel) :

Код

//: c08:Month2.java
// Более здоровая система перечисления.
package c08;

public final class Month2 {
 private String name;
 private Month2(String nm) { name = nm; }
 public String toString() { return name; }
 public final static Month2
   JAN = new Month2("January"),
   FEB = new Month2("February"),
   MAR = new Month2("March"),
   APR = new Month2("April"),
   MAY = new Month2("May"),
   JUN = new Month2("June"),
   JUL = new Month2("July"),
   AUG = new Month2("August"),
   SEP = new Month2("September"),
   OCT = new Month2("October"),
   NOV = new Month2("November"),
   DEC = new Month2("December");
 public final static Month2[] month =  {
   JAN, JAN, FEB, MAR, APR, MAY, JUN,
   JUL, AUG, SEP, OCT, NOV, DEC
 };
 public static void main(String[] args) {
   Month2 m = Month2.JAN;
   System.out.println(m);
   m = Month2.month[12];
   System.out.println(m);
   System.out.println(m == Month2.DEC);
   System.out.println(m.equals(Month2.DEC));
 }
} ///:~



PM MAIL   Вверх
Domestic Cat
Дата 30.12.2004, 01:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Хм? Вроде как уже и enum есть, да и о списках речь идет smile


--------------------

PM   Вверх
zss
Дата 5.1.2005, 22:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 708
Регистрация: 17.6.2004

Репутация: нет
Всего: 2



Спасибо за советы - попробую разобраться.

Только еще вопрос - что-то я не смог найти реализацию операторов в классах - или в java это делается только через функции ?
PM MAIL ICQ   Вверх
Domestic Cat
Дата 5.1.2005, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172




Цитата
Только еще вопрос - что-то я не смог найти реализацию операторов в классах - или в java это делается только через функции ?


Перегрузка опeраторов? Так ее нет.


--------------------

PM   Вверх
zss
Дата 5.1.2005, 23:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 708
Регистрация: 17.6.2004

Репутация: нет
Всего: 2



Цитата(Domestic @ 5.1.2005, 23:00)
Перегрузка опeраторов? Так ее нет.


Жаль, довольно удобно. А так только член-функция ?

PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0607 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.