如何返回java中填充的可增长hashmap?

mlnl4t2r  于 2021-06-27  发布在  Java
关注(0)|答案(3)|浏览(345)

这是我的java代码:

package utils;

import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import static com.app.core.AcType.*;
import static java.time.LocalDate.parse;

import com.app.core.BankAccount;

public interface CollectionUtils {
//add a static method to return fixed size populated list of bank accounts
    static List<BankAccount> populateAcctList() {
        return Arrays.asList(new BankAccount(10, "abc1", SAVING, 10000, parse("2020-01-19")),
                new BankAccount(100, "abc4", FD, 200000, parse("2019-01-19")),
                new BankAccount(34, "abc3", CURRENT, 5000, parse("2010-11-29")),
                new BankAccount(15, "abc6", SAVING, 12000, parse("2011-06-23")),
                new BankAccount(64, "abc8", SAVING, 9000, parse("2020-01-19")),
                new BankAccount(49, "abc2", DMAT, 13000, parse("2020-01-19"))
                );
    }
    //add a method to ret a populated growable hashmap from above sample data ??????

    static HashMap<String, BankAccount> populateAccountHashMap(){
        return 
    }
}

我添加了一个 static 方法返回固定大小的银行帐户填充列表!现在,我想添加一个 static 方法从相同的数据返回填充的可增长hashmap!我不知道怎么做?

vaqhlq81

vaqhlq811#

假设你有 List<BankAccount> 命名 accounts 你可以这样做。

Map<String, BankAccount> map = 
                    accounts.stream()
                    .collect(Collectors.toMap(BankAccount::getAccountName, acct->acct));

这假定名称是银行帐户示例中的第二个元素(或其他字符串),并且具有显示的getter。如果你想把钥匙换成别的东西,就相应地调整一下。请注意,这个特定的解决方案假设密钥和银行帐户是一对一的Map。如果您有重复的密钥(即在本例中,每个名称有多个帐户),它将抛出一个异常。然后您可以这样做,其中每个名称将引用一个相似的命名帐户列表。

Map<String,List<BankAccount>> map =  accounts.stream()
                    .collect(Collectors.groupingBy(BankAccount::getAccountName));
camsedfj

camsedfj2#

我有我的答案!

//add a method to ret a populated growable hashmap from above sample data ??????

    static HashMap<Integer, BankAccount> populateAccountHashMap(){
        HashMap<Integer, BankAccount> temp = new HashMap<Integer, BankAccount>();
        temp.put(10, new BankAccount(10, "abc1", SAVING, 10000, parse("2020-01-19")));
        temp.put(100, new BankAccount(100, "abc4", FD, 200000, parse("2019-01-19")));
        temp.put(34, new BankAccount(34, "abc3", CURRENT, 5000, parse("2010-11-29")));
        temp.put(15, new BankAccount(15, "abc6", SAVING, 12000, parse("2011-06-23")));
        temp.put(64, new BankAccount(64, "abc8", SAVING, 9000, parse("2020-01-19")));
        temp.put(49, new BankAccount(49, "abc2", DMAT, 13000, parse("2020-01-19")));
        return temp;
    }

已经核实了!

m1m5dgzv

m1m5dgzv3#

当您使用Java9+时 Map.of() 是有用的。
编辑
我修正了我的例子。请注意 Map.of() 返回一个不可变的Map,因此需要将其 Package 以使其可增长。

Map<String, BankAccount> map = new HashMap<>(Map.of(
    "abc1", new BankAccount(10, "abc1", SAVING, 10000, parse("2020-01-19")),
    "abc4", new BankAccount(100, "abc4", FD, 200000, parse("2019-01-19"))
  ));

相关问题