首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在java中同时删除两个相同索引值的数组中的元素

如何在java中同时删除两个相同索引值的数组中的元素
EN

Stack Overflow用户
提问于 2018-09-27 03:36:23
回答 2查看 41关注 0票数 -4

我有两个数组,其中包含两组strings.For示例列表domainList包含{'gmail',' yahoo ',‘two’,'aol'},并且列表flagList包含{'Y,'N','N','Y'} .So现在由于yahoo在列表中出现两次,我必须从该domainList中删除一个'yahoo',并且其从flagList.The结果列表中对应的标志将是{'gmail','yahoo','aol'}和{'Y','N','Y'}.I我不确定该怎么做。

有谁可以帮我?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-27 04:24:21

正如人们在评论中所指出的那样,您可以探索创建一个类来保存相关信息,然后使用这个类的一个实例列表。

但是,如果您确实想从一个列表中删除重复的元素,同时保持另一个列表的同步,则可以使用Set来跟踪已经看到的内容,并使用Iterator来遍历列表并删除集合中已经存在的元素:

代码语言:javascript
复制
public static void main(String[] args)
{
  List<String> domainList = new ArrayList<>(Arrays.asList("gmail","yahoo","yahoo","aol"));
  List<String> flagList = new ArrayList<>(Arrays.asList("Y","N","N","N"));

  Set<String> seen = new HashSet<String>();
  Iterator<String> di = domainList.iterator();
  Iterator<String> fi = flagList.iterator();
  while(di.hasNext() && fi.hasNext())
  {
    fi.next(); // don't care about result
    String domain = di.next();
    if(!seen.add(domain)) 
    {
      di.remove();
      fi.remove();
    }
  }    
  System.out.println(domainList);
  System.out.println(flagList);
}

输出:

代码语言:javascript
复制
[gmail, yahoo, aol] 
[Y, N, N]
票数 1
EN

Stack Overflow用户

发布于 2018-09-27 04:00:31

如果您的列表包含字符串,则可以使用此方法:

代码语言:javascript
复制
    List<String> notUniqueList = Arrays.asList("gmail", "yahoo", "yahoo", "aol");
    List<String> uniqueList = new ArrayList<>(new LinkedHashSet<>(notUniqueList));
    for (String s : uniqueList) {
        System.out.println(s);
    }

打印结果:

代码语言:javascript
复制
gmail
yahoo
aol

如果您打算使用自定义对象而不是String.class,请不要忘记override equals() and hashcode() methods

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52524943

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档