Map<String, Map<Fee, Map<Fee, List<Fee>>>> map = InputFee.stream()
				  .collect(groupingBy(Fee::getClientId, groupingBy(Fee::getSecurityId, groupingBy(Fee::getTransactionDate)))
						  );


// need to group by ClientId , securityID and getTransactionDate but different Transaction Type

Add a code snippet to your website: www.paste.org