HashMap第一个键为null

时间:2013-08-30 17:35:14

标签: java android arrays hashmap

我正在使用hasmap和LinkedHasmap一段时间,但现在在这种情况下是代理strang,我在一个hasmap中添加一个键和一个来自2个数组的值,在这种情况下大小= 4,具有相同的大小,但是hasmap在debbuging中把第一个键作为null我看到它将覆盖同一个位置的第二个键有第一个,它从来没有相同的键,从来没有相同的所以我无法理解发生了什么。

声明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

1 个答案:

答案 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");

enter image description here

如您所见,该元素已插入table[12]

另请注意HashMap allows null as key,因此如果将密钥设置为null,则此密钥为有效密钥。