注册 登录
编程论坛 JAVA论坛

关于去重的问题

星i辰 发布于 2019-08-04 11:25, 2068 次点击
import java.util.ArrayList;

public class Demo16 {
    public static void main(String[] args) {
        ArrayList<String> al=new ArrayList<>();
        al.add("第1题        A        C");
        al.add("第2题        A        C");
        al.add("第2题        A        D");
        al.add("第3题        A        C");
        for(int i=0;i<al.size();i++){
            String ss=al.get(i);
            String ss1="第"+(i+1)+"题";
            if(ss.equals(ss.contains(ss1))){
                al.remove(i);
            }
        }   
        for(int i=0;i<al.size();i++){
        System.out.println(al.get(i));
        }
    }
}

集合里现在有两个第2题,我想去掉第一个,如何才能去掉,试了半天,没想到好办法。。

[此贴子已经被作者于2019-8-4 11:37编辑过]

9 回复
#2
星i辰2019-08-04 11:41
对了,不能用固定的位置去除
比如,al.remove(1);  这种
#3
林月儿2019-08-04 11:51
用lambda的distinct,但要改写实体类的equals方法
#4
星i辰2019-08-04 11:56
大佬,我比较菜,能具体点吗?或者演示一下
刚学没多久。。
#5
林月儿2019-08-04 11:57
Map<String, String> map=new HashMap<>();
for(String str:al){
    map.putIfAbsent(str.split(" ")[0],str);
}
al=new ArrayList<>(map.values());

随手写的,没试过
#6
林月儿2019-08-04 11:58
哦,对了,我这是保留首个,你要是保留最新的,可以把putIfAbsent改成put是不是很简单?
#7
星i辰2019-08-04 12:56
好的,谢谢大佬,
#8
林月儿2019-08-04 20:40
不客气
#9
qiuzhiqiang12019-08-21 09:13
回复 楼主 星i辰
直接丢set里面,new HashSet(list当做构造函数传进去)
#10
林月儿2019-08-21 09:42
回复 9楼 qiuzhiqiang1
1