P.S. Oh, and when I am writing anyway — please, do not abuse the “overloaded” methods which differ just by their argument lists (myself, I consider them always at best suspicious; mostly plain wrong). Instead of the suggestion below, if something like that is accepted, it would be much better to change the method name appropriately (say, e.g., firstWithDefault, firstWithSupplier). Or perhaps named arguments might be (consistently!) used for these things (e.g., “first(default:value)” or “first(supplier:value)”).
Consider e.g., an array of closures, of which one would want to get the first one with a default closure... with the definitions suggested below that's going to be fun! All the best, OC > On 18 Oct 2018, at 5:39 PM, Milles, Eric (TR Technology & Ops) > <eric.mil...@thomsonreuters.com> wrote: > > I see there are the following DGMs for getting first element of a > "collection": > static <T> T first(T[] self) > static <T> T first(List<T> self) > static <T> T first(Iterable<T> self) > > Is there a simple sequence for getting the first element or a default value > if the "collection" is empty? If not, may I propose the addition of the > following DGMs: > static <T> T first(T[] self, T defaultValue) > static <T> T first(List<T> self, T defaultValue) > static <T> T first(Iterable<T> self, T defaultValue) > static <T> T first(T[] self, Closure<T> defaultSupplier) > static <T> T first(List<T> self, Closure<T> defaultSupplier) > static <T> T first(Iterable<T> self, Closure<T> defaultSupplier) > > > Eric M.