更改最后一个元素Hashmap的键

时间:2015-04-23 22:03:15

标签: java java-collections-api

我想把另一个字符串作为哈希映射的lastEntry的键。

检查lastEntry的值并更改后,我无法使用setKey或其他func来更改我想要更改lastEntry的键。

EditText name; // put that as the key
Map<String,Integer> Names = new HashMap<String,Integer>(10);
// .
// .
// .
name = (EditText) findViewById(R.id.namep);

我的func检查lastEntry的值并更改它:

boolean flagScore = false;
Entry<String, Integer> lastEntry = Names.lastEntry();
if(lastEntry.getValue() < score){
    lastEntry.setValue(score);
    flagScore = true;
}
if(flagScore){
    // put name.getText().toString as key
}

2 个答案:

答案 0 :(得分:0)

您可以使用Model类和ArrayList来实现此目的。例如

参加这样的课程

public class Demo {
  private String name; 
  private integer value;

  //create getters and setters for this variables. 
}

在你的班级中创建这样的数组列表。

private ArrayList<Demo> namesList  = new ArrayList<Demo>;

为模型类创建对象演示demo = new Demo;

demo.name = "";
demo.value = 1;

然后将模型类添加到ArrayList,如namesList.add(demo);

现在,您可以使用ArrayList执行任何操作。

答案 1 :(得分:0)

这也可以通过使用LinkedHashMap来实现 写了一个小程序,希望它会有所帮助。

public class HashMapIssue {
public static void main(String[] args) {
    Map<String,Integer> map=new LinkedHashMap<String, Integer>();
    map.put("Integer2", 1);
    map.put("Integer1", 2);
    map.put("Integer3", 3);
    map.put("Integer4", 4);
    map.put("Integer5", 5);
    System.out.println(map);

    Set  enteries = map.entrySet();
    Iterator it = enteries.iterator();
    String lastkey="";
    Entry entry;
    while(it.hasNext()){
        entry=(Entry) it.next();
        lastkey=(String) entry.getKey();
    }
map.remove(lastkey);
map.put("modifiedkey",0);   
System.out.println(map);                 
   }
}

输出是:

{Integer2=1, Integer1=2, Integer3=3, Integer4=4, Integer5=5}
{Integer2=1, Integer1=2, Integer3=3, Integer4=4, modifiedkey=0}