我有一个班级
public class student
{
private int Id;
private map<String , String> subjects;
private map<String , String> teachers;
private String name;
}
让我更清楚地解释一下情景。我有一个将Student对象作为参数的函数。从其他各种类调用此函数。现在在这个函数中,我创建了七个线程来根据学生输入对象执行一些计算。虽然目前没有修改学生对象。我仍然希望通过传递student对象的副本来保证它的安全,这样如果以后有人修改任何线程中的输入它不应该修改其他线程。
那么如何为地图创建新对象? 我可以尝试的另一个解决方案是将此类创建为不可变但即使这样地图也是一个问题。 如何使地图不变。
答案 0 :(得分:1)
如果线程必须操纵对象:
Map<String, String> subjects = new HashMap<>()
如果线程不必操纵对象:
Collections
类顺便说一下:
Subject
个对象和Teacher
个对象的列表。与使用地图相比,这使您的代码更容易扩展。