有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java“查询”列表

我有一个这样的对象列表:

ArrayList<Phone> list = new ArrayList();
list.add(new Phone("+44 20 8765 4321", "mobile", "26"));
list.add(new Phone("+44 20 8765 4322", "home", "23"));
list.add(new Phone("+44 20 8765 4323", "mobile", "27"));
list.add(new Phone("+44 20 8765 4324", "work", "26"));
list.add(new Phone("+44 20 8765 4325", "home", "27"));
list.add(new Phone("+44 20 8765 4326", "home", "26"));

(23、26、27是联系人的身份证)。如何“查询”此列表以获取具有多个电话号码{"26", "27"}的联系人的ID

我需要一个最佳的解决方案,它不会将许多小对象存储到内存中(我糟糕的实现导致GC频繁运行,导致手机长时间冻结)


共 (1) 个答案

  1. # 1 楼答案

    你能用这个算法吗

    Set<String> dupIds = new HashSet<String>();
    Set<String> set = new HashSet<String>();
    
    for (Phone p: list) {
      if (set.contains(p.id)) {
         dupIds.add(p.id);
      } else {
         set.add(p.id);
      }
    }
    

    dupIds在进程结束时包含重复的ID,我没有看到在这里创建太多的小对象