我有一个名称列表,其中包含与其关联的帐号。如何创建一种方法,当我从键盘输入某个名称时,它会搜索列表并使用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
答案 0 :(得分:1)
您可以将Map<String, List<Integer>>
用于此目的。
首先处理您的列表并将其添加到Map
(假设Element
为您的自定义类fullAccountName
和accountNumber
)
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
}
}
答案 1 :(得分: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;
}
答案 2 :(得分: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将是一个包含姓名以及与搜索关键字匹配的帐号的地图。