Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>Here is unit test with expectations:</p> <pre><code>import static java.util.Arrays.*; import static org.hamcrest.CoreMatchers.*; import static org.junit.Assert.*; import org.junit.Test; public class JoinerTest { private static final Converter&lt;Person, String&gt; PERSON_CONVERTER = new Converter&lt;Person, String&gt;() { @Override public String convert(Person object) { return object.getFirstName(); } }; @Test public void shouldPresentFirstNames() { // given Person person1 = new Person(); person1.setFirstName("foo"); Person person2 = new Person(); person2.setFirstName("bar"); Joiner&lt;Person&gt; joiner = new Joiner&lt;Person&gt;(", ", "\'"); // when String firstNames = joiner.join(PERSON_CONVERTER, asList(person1, person2)); // then assertThat(firstNames, is("\'foo\', \'bar\'")); } } </code></pre> <p>Converter is just an interface:</p> <pre><code>public interface Converter&lt;F, T&gt; { T convert(F object); } </code></pre> <p>And finally Joiner:</p> <pre><code>public class Joiner&lt;T&gt; { private final String delimiter; private final String quote; public Joiner(String delimiter, String quote) { this.delimiter = delimiter; this.quote = quote; } public String join(Converter&lt;T, String&gt; converter, Iterable&lt;T&gt; objects) { StringBuilder builder = new StringBuilder(); for (T object : objects) { String string = converter.convert(object); builder.append(quote); builder.append(string); builder.append(quote); builder.append(delimiter); } if (builder.length() &gt; 0) { builder.setLength(builder.length() - delimiter.length()); } return builder.toString(); } } </code></pre> <p>By using different converters it is easy to join properties of different types.</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload