title: How does Lambdaj having work?
body: <p>I am learning LambdaJ and everytime I need to achieve a task I have to check at existing examples and modify them in order to use lambdaj.</p>
  
  <p>I have started using it but I think I'm missing something here that would like to ask you.</p>
  
  <p>I'm not clear about using <code>having</code> method. I don't understand how it works and how I can I use it.</p>
  
  <p>I have debugged, decompiled and read its documentation but I don't find the "way of thinking" lambda.</p>
  
  <p><code>having</code> javadoc says:</p>
  
  <blockquote>
    <p>static  HasArgumentWithValue    having(A argument,
    org.hamcrest.Matcher matcher) </p>
    
    <p>Creates an hamcrest matcher that is
    evalued to true if the value of the given argument satisfies the
    condition defined by the passed matcher.</p>
  </blockquote>
  
  <p>I've used <code>having</code> in examples like this:</p>
  
  <pre><code>List&lt;User&gt; result = filter(having(on(User.class).getAge(), greaterThan(20)), list);
  </code></pre>
  
  <p>I understand that <code>having</code> applies a harmcrest matcher to an argument and repeats that all over the list.</p>
  
  <p>But my question is how does having works? How do I think in a functional way on lambdaj?</p>