2016-01-14 3 views
0

Я ищу способ получить первый элемент java.util.Set в velocity templating engine. Может ли кто-нибудь предложить?Apache Velocity templating: получить первый элемент java.util.Set

+6

"Первый"? 'Set' не имеет понятия порядка для своих элементов. – user2357112

+0

мой плохой, он чувствует. строго говоря, говорить о «первом элементе набора» не имеет смысла. – ambes

ответ

1

Возможно, вы можете получить элемент (случайный *) с

$var.iterator().next() 

Но Set с не имеют никакого порядка между их элементами, так что нет первого элемента.

* Случайно, как будто это зависит от реализации набора. В некоторых случаях (например, когда это SortedSet), данный Итератор возвращает элементы в некотором порядке. Смотрите SortedSet «s documentation: итератор

панели ресивера будет проходить набор в порядке возрастания элементов.

Но в этом случае, ничего не гарантирует, что реализация множества не изменится когда-то, так что, если мы говорим об общем Set, вы не должны зависеть от этого.

Если мы говорим о SortedSet, вы должны использовать first() метод, вместо:

$var.first() 
+0

Это работает, спасибо @Nagy Vilmos – ambes

+0

** Некоторые ** Наборы Java имеют естественный порядок, который отражается в методе итератора(), поэтому это может быть полезно. Например, [java.utll.TreeSet] (https://docs.oracle.com/javase/8/docs/api/java/util/TreeSet.html#iterator--) "Возвращает итератор по элементам в этом в порядке возрастания ". –

+0

@PatriciaShanahan: да, но если это «TreeSet» (если это какой-либо подкласс «SortedSet»), то он имеет метод «first()». Но если статический тип данной переменной просто «Set», то любой может изменить тип набора dinamyc - и я бы ничего не писал на основе некоторой теории (текущая реализация - «TreeSet» и ...) - я сделал хочу выразить это, используя слово «случайный». –

 Смежные вопросы

  • Нет связанных вопросов^_^