-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と仮定Elementします)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 に答える