Java - Тип RECORD
|
Старожил Сообщения: 361 |
Профиль | Отправить PM | Цитировать Здравствуйте!
Как в Java реализуется тип, аналогичный типу запись (RCORD) в языке Pascal? Хотя бы как такой тип на Java называется?.... |
|
Отправлено: 13:55, 29-09-2009 |
Новый участник Сообщения: 8
|
Профиль | Отправить PM | Цитировать Цитата ManHack:
Записи в Паскале нужны для хранения набора данных разных типов, если я правильно понимаю. Паскаль не объектно-ориентированный язык, поэтому для такой задачи ему требуется специальная структура - Record. А в Java любой класс может хранить набор гетерогенных данных. Например, можно написать так: class MyRecord { public static int X; public static String Y; public static double Z; } И обращаешься к нему как к записи в Паскале: MyRecord.X = 1; MyRecord.Y = "xxx"; Или если не хочешь глобального доступа, тогда так: class MyRecord { public int X; public String Y; public double Z; } MyRecord myRecord = new MyRecord (); myRecord.X = 1; myRecord.Y = "xxx"; myRecord.Z = 2.2; Вот тебе и аналог простой записи. Если немного поднапрячься, можно реализовать аналог вариантной записи. Когда у нас есть классы, необходимость в записях как таковых отпадает начисто. |
|
Отправлено: 17:06, 29-09-2009 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 361
|
Профиль | Отправить PM | Цитировать Спасибо! Я написал таким образом сортировку простым (прямым) выбором:
public class Element { public String Data; // здесь вставлял static после public, но компилятор выразил негодование: "This field can't be declared static. Static fields can only be declared in static or top level types"... На dynamic он ещё больше рассердился xD public String Key; // аналогично... дак почему статик нельзя? что значит static or top level TYPE? Я вообще TYPE в своей программе не использую } public static void SelectSort (Element[] a, int n) { int i, j, jmin; Element buf; for ( i = 0; i < n - 1; i++) { jmin = 1; for ( j = i + 1; i < n; i++) { if (a[j].key < a[jmin].key) { jmin = j; } } buf = a[i]; a[i] = a[jmin]; a[jmin] = buf; } } |
Отправлено: 20:54, 29-09-2009 | #3 |
Новый участник Сообщения: 8
|
Профиль | Отправить PM | Цитировать Цитата ManHack:
Поехали дальше static в данном контексте вообще не требуется. Более того, сортировка не получится, потому что static поля являются глобальными по отношению ко всему классу, то есть для каждого экземпляра класса их значение всегда будет одним и тем же. Сравнивать так: if (a[j].Кey < a[jmin].Кey) нельзя, потому что Key у тебя String, а не число. И вообще кey у тебя с маленькой буквы, а в Java в отличие от Паскаля идентификаторы чувствительны к регистру. key и Key - разные вещи. Для пары "ключ - данные" есть специальные типы, например HashMap, и свой собственный тип создавать не надо. В HashMap, например можно добыть данные по ключу, получать список ключей и много ещё чего полезного там есть. Для сортировки в принципе не требуется писать специальных методов, в Java есть встроенные механизмы. Например, вот - http://www.javaportal.ru/java/articles/sort.html Вроде всё. |
|
Последний раз редактировалось Cornknight, 30-09-2009 в 08:34. Отправлено: 08:08, 30-09-2009 | #4 |
Старожил Сообщения: 361
|
Профиль | Отправить PM | Цитировать Цитата:
Цитата:
А как тогда строки сравнивать? О.о (допустим, передо мной стоит задача сравнить две переменные типа String). Цитата:
P.S.> А на C# алгоритм сортировки сильно отличаться будет? Чем там заменятся записи и классы? Хотелось бы пару умных ссылок, где можно было бы про это коротко и внятно прочитать.. а то время поджимает >_<" |
||||
Отправлено: 22:13, 30-09-2009 | #5 |
Новый участник Сообщения: 8
|
Профиль | Отправить PM | Цитировать Цитата ManHack:
Цитата ManHack:
Если что-то другое, то.. не знаю. Как "Вася" сравнить с "Петя"? Тут разный подход возможен.. Можно сравнивать в алфавитном порядке так: a[j].Key.compareTo(a[jmin].Кey), но подробно про этот метод снова стоит почитать в документации. Цитата ManHack:
Цитата ManHack:
Цитата ManHack:
|
|||||
Отправлено: 07:34, 01-10-2009 | #6 |
Старожил Сообщения: 361
|
Профиль | Отправить PM | Цитировать А как быть с сортировкой двоичным деревом? Там ведь указатели вида t^.key .... На что их заменить в C#?
К сожалению, ключи у меня содержат буквы и цифры |
Отправлено: 19:55, 01-10-2009 | #7 |
Новый участник Сообщения: 8
|
Профиль | Отправить PM | Цитировать Цитата ManHack:
Цитата ManHack:
|
||
Отправлено: 21:00, 01-10-2009 | #8 |
Старожил Сообщения: 361
|
Профиль | Отправить PM | Цитировать Обычное лексикографическое упорядочивание по алфавиту вида:
Andrey Kolya1 Kolya22 Laurinas Vasyapupkin Warezov ... Судя повсему метод String.Compare(str1, str2, false) в C# и str1.compareTo(str2) в Java мне подходит... Я переписал процедуры с использованием этого метода. http://msdn.microsoft.com/ru-ru/library/885e1sy1.aspx (C#) Теперь надо ломать голову над TreeSort... оказывается это чудо в википедии всё-таки описано... http://ru.wikipedia.org/wiki/Сортиро...оичного_дерева осталось ээ... вдуматься в код ^_^ |
Отправлено: 21:38, 01-10-2009 | #9 |
Старожил Сообщения: 361
|
Профиль | Отправить PM | Цитировать |
Отправлено: 21:55, 01-10-2009 | #10 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Разное - Неизвестный тип файла | roniro | Microsoft Windows 2000/XP | 6 | 06-07-2008 01:00 | |
550 Your host [xxx.xxx.xxx.xxx] doesn't have correct PTR record | Donner | Microsoft Windows NT/2000/2003 | 3 | 24-12-2007 16:01 | |
TEdit и тип AnsiString | Sir Z | Программирование и базы данных | 6 | 15-02-2006 12:34 | |
Как удалить загрузчик из Master Boot Record | vadimiron | Общий по Linux | 13 | 30-12-2004 17:24 | |
тип сервера? | modem | Хочу все знать | 1 | 02-03-2003 05:49 |
|