You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java基于ArrayList实现年龄筛选 查找联系人列表最年长最年幼人员姓名

查询联系人列表最大/最小年龄人员方法实现

方法1:使用Java Stream API实现(简洁写法)

// 返回值:索引0为年龄最大的人员姓名,索引1为年龄最小的人员姓名
public String[] getMaxMinAgeName(ArrayList<Contato> contatoList) {
    // 处理空列表边界
    if (contatoList == null || contatoList.isEmpty()) {
        return new String[]{"列表为空", "列表为空"};
    }
    // 查找年龄最大的联系人
    Contato maxAgeContato = contatoList.stream()
            .max((c1, c2) -> Integer.compare(c1.getIdade(), c2.getIdade()))
            .get();
    // 查找年龄最小的联系人
    Contato minAgeContato = contatoList.stream()
            .min((c1, c2) -> Integer.compare(c1.getIdade(), c2.getIdade()))
            .get();
    return new String[]{maxAgeContato.getNome(), minAgeContato.getNome()};
}

方法2:单次遍历实现(性能更优,适合大列表场景)

public String[] getMaxMinAgeName(ArrayList<Contato> contatoList) {
    if (contatoList == null || contatoList.isEmpty()) {
        return new String[]{"列表为空", "列表为空"};
    }
    Contato maxAgeContato = contatoList.get(0);
    Contato minAgeContato = contatoList.get(0);
    for (Contato contato : contatoList) {
        if (contato.getIdade() > maxAgeContato.getIdade()) {
            maxAgeContato = contato;
        }
        if (contato.getIdade() < minAgeContato.getIdade()) {
            minAgeContato = contato;
        }
    }
    return new String[]{maxAgeContato.getNome(), minAgeContato.getNome()};
}

调用示例

直接传入指定列表查询

// 查询Familia列表的最大、最小年龄人员姓名
String[] result = getMaxMinAgeName(Familia);
System.out.println("年龄最大:" + result[0] + ",年龄最小:" + result[1]);

适配按日程名称查询的封装

public String[] getMaxMinAgeByAgenda(String nomeAgenda) {
    switch (nomeAgenda) {
        case "Familia":
            return getMaxMinAgeName(Familia);
        case "Amigos":
            return getMaxMinAgeName(Amigos);
        case "Profissional":
            return getMaxMinAgeName(Profissional);
        default:
            throw new RuntimeException("无效的日程名称");
    }
}

现有代码优化提示

  • 字符串内容比较不要用==,要使用equals()方法,比如adicionaContato方法里的nomeAgenda == "Familia"需要修改为nomeAgenda.equals("Familia")
  • eliminaContato方法中getFamilia().contains(nomeContato)逻辑错误,contains判断的是Contato对象本身,不是姓名属性,需要遍历列表对比每个对象的nome属性后再执行删除
  • GestaoContatos和Contato不存在is-a的继承关系,建议去掉继承逻辑

内容的提问来源于stack exchange,提问作者Ozzott

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 20:36:00