title: Fastest way to pick a random element from a list that fulfills certain condition
body: <p>I need to pick a random element from a list, that fulfills certain condition. The approach I've been using works, but I'm sure is not every efficient. What would be the most efficient way to do it?</p>
  
  <p>The following code is inside a while (true) loop, so obviously is not very efficient to shuffle the list on every iteration.</p>
  
  <pre><code>Foo randomPick = null;
  Collections.shuffle(myList);
  for (Foo f : myList) {
      if (f.property) {
          randomPick = f;
          break;
      }
  }
  </code></pre>
  
  <p>Thanks in advance!</p>