Java集合问题,取不重复集合

实体类集合list(A) A里面有字段a和b,b固定可取三个死值1、2、3,a不定,对于相同的a可能有多个不同的b对应(多个元素,里面a相同b不同)
求:取a不重复的集合result,其中b优先级3>2>1(有3不取2,有2不取1)

我的思路是把A根据b的1、2、3拆分成三个集合中A1\A2\A3,取最终结果时便利A,A3中存在放入result->A2中存在且result不存在放入result->A1中存在result中不存放入result,但是多次便利(拆分+取结果),浪费时间浪费内存空间,有没有更好的解法求解答

steam先给A集合分组 分组成为一个集合map M,该map的key为a,value为具有相同a的集合
然后遍历map M,value.steam取b值最大的一个元素 统一放到一个新集合

思路:
1.A里面写个排序规则,按顺序存放;
2.循环判断,取到第一个后,后面相同不处理。

求a去重取b值大的优先
思路:
stream.collector收集tomap,以a为key,数据A为value,比较函数取b值大的,最后拿map的value集合