Проще использовать «источник», и вы можете использовать свой пользовательский сериализатор для заполнения полей владельца.
Пример:
class ImageSerializer(serializers.HyperlinkedModelSerializer):
prop_post = serializers.SlugRelatedField(queryset=PropertyPost.objects.all(),
slug_field='pk')
owner = UserSerializer(source="prop_post.owner")
class Meta:
model = Image
fields = (
'url',
'photo',
'prop_post',
'owner',
)
Нужно ли использовать HashMap? Если вам нужен только интерфейс карты, используйте TreeMap
Если вы хотите отсортировать, сравнивая значения в HashMap. Вы должны написать код, чтобы сделать это, если вы хотите сделать это, как только вы можете отсортировать значения вашего HashMap:
Map<String, Person> people = new HashMap<>();
Person jim = new Person("Jim", 25);
Person scott = new Person("Scott", 28);
Person anna = new Person("Anna", 23);
people.put(jim.getName(), jim);
people.put(scott.getName(), scott);
people.put(anna.getName(), anna);
// not yet sorted
List<Person> peopleByAge = new ArrayList<>(people.values());
Collections.sort(peopleByAge, Comparator.comparing(Person::getAge));
for (Person p : peopleByAge) {
System.out.println(p.getName() + "\t" + p.getAge());
}
Если вы хотите часто обращаться к этому отсортированному списку, вы можете вставить свои элементы в HashMap
, хотя семантика наборов и списков немного отличается.
Если вы хотите объединить карту для эффективного поиска с SortedMap, вы можете использовать ConcurrentSkipListMap .
Конечно, ключ должен быть значением, используемым для сортировки.
My experience is that most programmers who talk about DP do not understand one bit of the forces etc. around it! Процитирую Йегге в его великом «Синглтоне, считающемся глупым» :
Если они претендуют на опыт разработки шаблонов, и они могут ТОЛЬКО назвать шаблон «Синглтон», то они будут работать ТОЛЬКО в какой-то другой компании. 121 --- 3212082-
Без дополнительной информации трудно точно знать, что вы хотите. Однако, выбирая, какую структуру данных использовать, вы должны принять во внимание, для чего она вам нужна. Хеш-карты не предназначены для сортировки - они предназначены для удобного поиска. Поэтому в вашем случае вам, вероятно, придется извлечь каждый элемент из хэш-карты и поместить их в структуру данных, более подходящую для сортировки, например, в кучу или набор, а затем отсортировать их там.
Похоже, вам может понадобиться древовидная карта.
http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html
You может передать ему собственный компаратор, если это применимо.
http://snipplr.com/view/2789/sorting-map-keys-by-comparing-its-values/
получить ключи
List keys = new ArrayList(yourMap.keySet());
Сортировать их
Collections.sort(keys)
напечатайте их.
В любом случае вы не можете отсортировать значения в HashMap (согласно API . Этот класс не дает никаких гарантий относительно порядка отображения; в частности, он не гарантирует, что порядок будет остаются постоянными во времени
].
Хотя вы можете отправить все эти значения в LinkedHashMap
, для дальнейшего использования.