声明hasmap有一个字段。
private HashMap<String, String> courses = new HasMap<String, String>();
在这个方法中我想填充hasMap:
private void coursesInit(int coursesListSize) {
for (int j = 0; j < coursesListSize; j++) {
LayoutInflater inflater = (LayoutInflater) this
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
LinearLayout inserPoint = (LinearLayout) findViewById(R.id.linear_layout_inside_left);
LinearLayout row = new LinearLayout(this);
row.setLayoutParams(new LayoutParams(
android.view.ViewGroup.LayoutParams.MATCH_PARENT,
android.view.ViewGroup.LayoutParams.WRAP_CONTENT));
View view = inflater.inflate(R.layout.courses_button_left_drawer,
null);
Button btnTag = (Button) view.findViewById(R.id.course_id);
btnTag.setLayoutParams(new LayoutParams(
android.view.ViewGroup.LayoutParams.MATCH_PARENT,
android.view.ViewGroup.LayoutParams.WRAP_CONTENT));
if (coursesIdList.isEmpty()) {
btnTag.setText("Your Course " + (j + 1));
btnTag.setId(j);
} else {
btnTag.setText(coursesNamesList.get(j));
btnTag.setId(Integer.parseInt(coursesIdList.get(j)));
// Populate LinkedHasMap in the correct order where Key=
// course_id && Value= course_fullname
courses.put(coursesIdList.get(j), coursesNamesList.get(j));
}
if (j != 0) {
btnTag.setBackgroundResource(R.drawable.border_inside);
}
row.addView(view);
inserPoint.addView(row, 3);
}
}
我也尝试过只使用Map和LinkedHasMap,并在一个方法内部只使用for循环数组,但它的相同结果。
debbuging截图:
课程HasMap: Courses Hasmap
阵列: Arrays
答案 0 :(得分:3)
如果您的问题是调试器中table[0]
实例的HashMap
元素为null
,那么只要HashMap
按照说明运行就不会有问题在文档中(它做)。内部实现细节对您来说无关紧要(这是一个黑盒子供您使用)。如果您想要检索地图的键,请使用HashMap#entrySet
。
请参阅以下HashMap中单个插入的示例以及生成的HashMap#table
字段:
final Map<String, String> map = new HashMap<String, String>();
map.put("One", "1");
如您所见,该元素已插入table[12]
。
另请注意HashMap
allows null as key,因此如果将密钥设置为null,则此密钥为有效密钥。