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

Каково использование класса Pair и почему оно реализовано здесь?

В чем разница между Pair Class and a HashMap. Я вижу, что они имеют key and value.

Код ранее:

 List<Patient> patientDetails = new ArrayList<Patient>();
 Patient patientInfo = new Patient();
 patientInfo.setReligion(Constants.ReligionArray[custom.getReligion()]);
 patientDetails.add(patientInfo);

Сегодня код был изменен.

Измененный код

List<Pair<String, String>> patientInfo = new ArrayList<Pair<String, String>>();
patientInfo.add(new Pair<String, String>("Religion", Constants.ReligionArray[custom.getReligion()]));
  • Почему они внедрили Pair Class here? В чем может быть причина.
  • В чем разница между Pair Class and a HashMap.

Примечание. Оба кода отлично работают.

4b9b3361

Ответ 1

Прежде чем говорить о различии между Pair и HashMap, позвольте мне рассказать вам, почему на самом деле не на вопрос, на который вы хотите ответить. То, что вы действительно хотите знать, - это то, почему вы возьмете объект и разделите его на список примитивов key/value.

Код, на который вы ссылаетесь, - это преобразование из объектно-ориентированного подхода использования класса Patient (который действительно выглядит так, как его следует называть PatientInfo) в список примитивов, они являются существенным "deObjectOrienting" для класса.

Таким образом, в своей модели каждая переменная класса становится Pair, где имя переменной становится ключом, а значение переменной становится значением.

Вот расширенный класс класса

// Old style (Object oriented)
class PatientInfo{
    String religion;
    String address;
}
PatientInfo patientInfo = new PatientInfo();
patientInfo.setReligion("myReligionName"); 
patientInfo.setAddress("address of the patient"); 

// New Style, key/value primitive pairs (very not object oriented)
Pair<String,String> religionInfo = new Pair<String,String>("religion","myReligionName");
Pair<String,String> addressInfo = new Pair<String,String>("address","address of the patient");

Затем они добавят их либо Patient, либо Pair в список.

Почему кто-то делает это, это хороший вопрос. Большинство людей стараются стать более объектно ориентированными, поскольку упрощают кодирование. Возможно, поскольку в CLS только одна переменная, они поняли, почему бы не полностью удалить класс?

В исходный вопрос между парой и HashMap. Пара - это просто ключ/ценность. HashMap - это коллекция, обычно используемая для хранения многих пар ключ/значение. Здесь они используют список, где они, вероятно, должны использовать HashMap.

Ответ 2

Фактически, ваш код был изменен от обычного подхода Java к тому, что чаще всего называется "отказ объекта". Замена произошла из выделенного объекта домена Patient в общий Pair<String, String>.

Итак, вы спрашиваете о разнице между List<Pair<String,String>> и Map<String,String>. Первая содержит больше информации, поскольку она поддерживает порядок вставки отдельных пар, а также позволяет произвольный доступ на основе позиции в списке.

A Map, с другой стороны, позволяет эффективно искать на основе ключа, что действительно необходимо.

Ответ 3

  • Класс Pair - это просто структура с двумя полями, которая не имеет специального имени (в отличие от Person). Пары (и, в более общем плане, кортежи) часто используются в таких языках, как Python, когда вы не хотите указывать имя какой-либо промежуточной структуре. В вашем случае вместо (возможно) недопределенного объекта Person у вас есть простой полностью определенный объект. Возможно, использование Pair сомнительно в Java, из-за довольно неуклюжий синтаксис (сравните с Python, где пара будет просто ("Religion", religions)).

  • Вы можете думать о Map как о наборе пар с единственным ограничением для первого элемента.

Ответ 4

Я думаю, что вопрос, который вы задаете, таков: в чем разница между List<Pair<T,S>> и HashMap<T,S>. Их много.

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

A List - это упорядоченный контейнер, в котором хранятся объекты, предоставляет средства для итерации по его содержимому и получения элемента на основе его местоположения в списке (получить N-й элемент). Обычно одни и те же элементы могут дублироваться в списке.

В вашем случае, когда вы используете список, ваши пациенты могут иметь несколько религий. Чтобы узнать, какую религию имеет ваш пациент, вам нужно вручную найти список для пары с первым элементом, установленным в религии.

Если бы вы использовали карту, у каждого пациента была бы единственная религия, связанная с ним (или ни одна). Вы также можете быстро найти религию через Map<String,String>.get(String key)

Ответ 5

Класс Pair можно сравнить с Map.Entry HashMap. HashMap может содержать несколько пар ключ/значение, хранящихся и эффективно проверенных ключом.

Список пар не может быть просмотрен ключом без повторения неэффективности (в зависимости от размера), но на него можно ссылаться по индексу. Также нет ничего, что обеспечивало бы один и только один ключ в списке.

Ответ 6

Объект A Pair хранит ровно один ключ и одно значение. A HashMap - это структура, в которой вы можете хранить несколько пар ключ/значение.

Ответ 7

"Пара" - это пара элементов, которые вы хотите каким-то образом связать. Нет ключевых правил, списков предметов или чего-либо еще. Это просто ярлык, когда у вас есть пара предметов, которые действительно наиболее полезны в качестве пары элементов, но достаточно простая структура, где нет необходимости создавать отдельный класс, чтобы связать их. Примеры: точки на прямоугольнике, ip-адреса в доменах и т.д.

Хешмап можно рассматривать как отображение пар с применением "ключевой" спецификации. В этом случае первый элемент пары становится "константой" и используется для обозначения второго элемента. В моем примере пар я использовал ip-адреса для доменов. В этом случае мы будем использовать домен как "ключ" и использовать его для ссылки на IP-адрес машины. Этот IP-адрес, конечно, может измениться, но домен всегда будет одним и тем же и будет использоваться для быстрого поиска текущего связанного ip-адреса. Обратите внимание, что ограничение первого элемента в паре, являющейся "ключом", исходит из хэш-карты, а не спецификация пары istelf. Хэш-часть hashmap затем ссылается на то, как элементы просматриваются, в этом случае хеш-таблица, на "первом" элементе в паре...