【问题标题】:How do I search by last name in an array?如何在数组中按姓氏搜索?
【发布时间】:2020-08-10 20:27:47
【问题描述】:

我正在尝试创建一种在全名数组中搜索姓氏的方法,但它似乎不起作用。关于我在这里做错的任何想法:


        public int searchRegisterByFamilyName(String familyName) {
            
             int searchByFamilyName(Name [] list,  String fullname) {
                 for (int i= 0; i < list.length; i++) {
            
            String[] splitted = fullname.split(" ");

            String firstName;
            String surName;  
            firstName = splitted[0];
            surName = splitted[1];
            
            String[] splittedd = familyName.split(" ");

            String FirstName;
            String lastName;     
            FirstName = splittedd[0];
            lastName = splittedd[1];
                              
                              if (list[i].surName.equals(lastName)) 
                                  return i;
                              }
                          }
                          return -1;
        }

数组中的名称是全名,因此我必须将其拆分以仅搜索姓氏。

理想情况下,我希望它接受一个 String 参数,它返回 true 或 false 取决于是否存在具有相应姓氏的名称。

【问题讨论】:

  • 您的代码无法编译,能否提供正在编译的代码?
  • 代码有很多问题,不过我问你几个问题...familyName是什么,fullname是什么?为什么你在另一个方法中有一个方法?
  • 不可能知道你的名字是如何构成的。您最好返回一个包含名称信息的 Name 类(例如 first、last、mi)。然后,您可以返回 Name 对象,甚至是具有相同名称的 Name 对象列表,而不是返回索引。

标签: java arrays search


【解决方案1】:

Stream 方式:

Set<Name> matchedNames = names
.stream()
.filter(n -> n.getFamilyName().equals(requestedFamilyName))
.collect(Collectors.toSet());

这将给出所有(如果有的话)匹配的名称

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-02
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多