在Java中将HashMap作为参数传递

时间:2017-03-10 03:05:46

标签: java hashmap

所以我主要创建了主要类Library

HashMap<String, HashSet<String>> students_books = new HashMap<String, HashSet<String>>(); 

然后我会上课Student,我将建立一个将HashMap作为参数的构造函数:

public class Student {

    private Student(HashMap students_books){

然后在我的主类中再创建一个student对象,我想把HashMap作为参数:

Student student = new Student(*HashMap as parameter*);

我找不到的是我如何做到这一点以及Student类如何知道我传递的HashMap的类型,例如<String, HashSet<String>>

4 个答案:

答案 0 :(得分:2)

回答你的问题 - “如何将HashMap作为参数传递”以及Student类如何知道类型 我提供了一种更通用和标准的方法来实现这个目标

Map<K,V> books = new HashMap<K,V>(); // K and V are Key and Value types
Student student = new Student(books); // pass the map to the constructor

..
//Student Constructor
public Student(Map<K,V> books){
..
}

答案 1 :(得分:1)

  

知道我传递的HashMap的类型

首先,你的方法不是构造函数,因为它有返回类型,删除它的返回类型并公开你的构造函数。然后通过执行此操作强制它们传递您想要的任何类型的HashMap

public class Student {

    public Student(HashMap<String, HashSet<String>> students_books){

然后像这样传递它们

HashMap<String, HashSet<String>> students_books = new HashMap<String, HashSet<String>>(); 
Student student = new Student(students_books);

答案 2 :(得分:1)

在您的Student类构造函数(当前是一个方法,因为它具有返回类型)中,该参数不使用泛型类型。

请将其更改为以下内容。

public StudentHashMap(HashMap<String, HashSet<String>> students_books){

}

这将确保在编译期间类型安全

答案 3 :(得分:1)

您所做的是私有方法,而不是构造函数。 将您的方法更改为:

public Student(HashMap<String, HashSet<String>> student_books) {
    //your code here
} 

我这样会成为你想要的真正的构造函数,希望这会有所帮助