-5

我有一个名称列表,其中包含与之关联的帐号。我将如何创建一个方法,当我从键盘键入某个名称时,它将搜索列表并使用 java 返回与其关联的所有帐号?例如,如果我将名称“Lisheen”传递给该方法,它将返回与其关联的所有帐号以及以“Lisheen”开头的其他帐户名称和号码。

      Name                     Account Number
     A-Wear                      78090231
     John                        76581234
     PSTN                        76811467
     Arni Harald                 78062351
     Barry Moore                 77002345
     Chill industries            79205416
     Espion                      78348903
     Michael                     78583451
     Kathleen O'Hara             78505421
     Liam Home                   76314321
     Lisheen Mine                78074315
     Lisheen Mine                78085413
     Lisheen Mine                78083413
     Lisheen Mine                78083413
     Lisheen Mine                78084315
     Lisheen Mine                78086441
     Lisheen Mine Res. RD        77972341
     Lisheen Mine Res. SW        77662345
     Lisheen Mine Res. TMcK      78521234
     Nolan Supermarket           79101234
     Nolan Transport             78095413
     PR Reilly Merchants Quay    77387689
     PR Reilly Togher            77382351
     PR Reilly Howth             77383215
     SightSavers                 78228794
4

3 回答 3

1

您可以Map<String, List<Integer>>用于此目的。

首先处理您的列表并将它们添加到Map(假设是包含andElement的自定义类)fullAccountNameaccountNumber

for(Element e : list) {
   List<Integer> accNums = map.get(e.getName());   
   if(accNums == null) {
         accNums = new ArrayList<Integer>();
         map.put(e.getName(), accNums);
   }
   accNums.add(e.getAccountNumber());
}

一经处理,

for(Entry<String, List<Integer>> e : map.entrySet()){
   if(e.getKey().startsWith(userSearch)) {
      return e; // which is essentially the key value pair of acc name vs. all acc. numbers
   }
}
于 2013-05-21T09:39:15.687 回答
0
public HashMap<String, List<String>> getSortedHashMapForEmployees(string searchKeyword,List<yourDtoFromDB> orginalListFromDB)
    {
        HashMap<String, List<String>>hashmap=new HashMap<String, List<String>>();
        for (List<yourDtoFromDB> orginalList : orginalListFromDB) 
        {
            if(orginalList.getName().contains(searchKeyword))
            {
                List<String>accountNo=new ArrayList<String>();
                if(hashmap.containsKey(orginalList.getName()))
                {
                    accountNo=hashmap.get(orginalList.getName());
                }
                accountNo.add(orginalList.getAccountNo());
                hashmap.put(orginalList.getName(), accountNo);
            }
        }
        return hashmap;

    }
于 2013-05-21T09:50:06.583 回答
0

您必须使用地图来执行此操作,因为您需要将名称与帐号相关联。

您可以Map<String, List<Integer>>为每个名称存储相应的帐号列表。(尝试自己执行此操作)

然后为查找搜索键使用方法并传递地图和搜索键。然后您可以使用下面的伪代码来搜索您的密钥。

这是示例伪代码:

Map<String, List<Integer>> temp=new HashMap<String, List<Integer>>();
for(Entry<String, List<Integer>> e : map.entrySet()){
   if(e.getKey().contains(searchKey)) {
     temp.put(e.getKey(),e.getValue());
   }
}
return temp;

这里 temp 将是一个包含名称以及与搜索键匹配的帐号的映射。

于 2013-05-21T10:22:01.067 回答