Search code examples
javavelocitytemplating-engine

Apache Velocity templating: get first element of java.util.Set


I am looking for a way to get the first element of java.util.Set in velocity templating engine. Can anyone suggest?


Solution

  • Probably you can get a (random*) element with

    $var.iterator().next()
    

    But Sets do not have any order between their elements, so there's no first element.

    *Random, like it depends on the set's implementation. In some cases (for example, when it's a SortedSet), the given Iterator will give back the elements in some order. See the SortedSet's documentation:

    The set's iterator will traverse the set in ascending element order.

    But in this case, nothing guarantees, that the Set's implementation won't change sometime, so if we're talking about a general Set, you should not depend on this.

    If we're talking about a SortedSet, you should use the first() method, instead:

    $var.first()