Building object from unusually custom object
notificationSettingsCustomPair.stream()
                    .anyMatch(cp-&gt; cp.getKey().equals(something)) ?
                    (Boolean) notificationSettingsCustomPair.stream().filter(cp  -&gt; cp.getKey().equals(something)).collect(toList()).get(0).getValue() : null


can be replaced by

notificationSettingsCustomPair.stream().filter(cp  -&gt; cp.getKey().equals(something)).findFirst().map(v -&gt; v.getValue()).orElse(null)


It's now only streamed once.

Please note that you use your list like a Set which I find strange, you should consider looking at Set specificities.