JAVA中如何判断List<Person>中自定义泛型的值不重复添加

假设我的Person类有id,name,address三个字段,如何保证不向List中重复添加Item.
最新回答
ぜ龙游浅水

2024-11-02 13:21:58

要保证每个Person中的三个属性字段必须是唯一的?
如果真是这种需求的话,你可以这样做:用另一个Map来保存已经添加了的唯一值
像这样
list用来保存Person对象
map用来保存唯一值

如果是id必须唯一,那么每次在list.add之前把id放到map中去作为key值,
以后每次在list添加之前都判断一下map中是否有这个key值,如果有就不允许添加,没有就添加

如果三个属性字段全是唯一的话,可以把三个属性字段用“,”好拼接起来
像这样id+","+name+","+address,
然后把这个字符串作为唯一值放到map中去。
然后每次list添加之前判断map中是否有这个key值
这样就能保证list中保存的所有Person对象的属性唯一
我不会写诗

2024-11-02 02:32:31

用Set吧。set是是无序不重复的。如果用Person的话,你需要进行比较的。
清几何

2024-11-02 14:04:42

直接使用list是没法做到的。
可以 使用map ,然后需要Person重写 equals和hashCode方法。
你与北诗

2024-11-02 00:46:25

你在添加的时候一定是以Person的实例进行添加的,为什么会重复添加呢?

如果重复添加的话,你可以在添加之前循环遍历一下
追问
怎么才能不以Person的实例添加呢?
追答
你用是
List泛型向list添加数据,当然是以Person的实例进行添加了啊

邓明和汪意平说的也不错