gpt4 book ai didi

java - 你能像在 ArrayList 中那样循环遍历 HashMap 吗?

转载 作者:行者123 更新时间:2023-12-01 18:19:22 24 4
gpt4 key购买 nike

你能像在 ArrayList 中一样循环遍历 HashMap 吗?所以如果我有一个 Person 类:

public class Person
{
private String name;
private int age;

public Person(String name, int age)
{
this.name = name;
this.age = age;
}

public String getName()
{
return name;
}

public int getAge()
{
return age;
}
}

然后有一类成员(member)资格,并使用数组列表我可以确保名称不重复:

import java.util.ArrayList;

public class Memberships
{
private ArrayList<Person> members;

public Memberships()
{
ArrayList<Person> members = new ArrayList<Person>();
}

public void addMember(String name, int age)
{
Person p = new Person(name, age);
for (Person membs : members)
{
if (membs.getName().equals(name) && membs.getAge()==age)
{
return;
}
}
members.add(p);
}
}

但是,如果我想使用 HashMap 来代替姓名和年龄:

HashMap<String, Integer> members = new HashMap<String, Integer>();

然后我想做同样的事情,并检查姓名和年龄是否与另一个案例相同,我可以使用循环并检查吗?

public class Memberships
{
private HashMap<String, Integer> members;

public Memberships()
{
members = new HashMap<String, Integer>();
}

public void addMember(String name, int age)
{
members.put(name, age);
}
}

我知道这样做有点奇怪,我只是想了解 HashMap。

好吧,然后我改变了它,这样:

HashMap<Person, ID> members = new HashMap<Person, ID>();

然后我想:

public void addMember(String name, int age)
{
Person p = new Person (name, age);
members.put(p, id);
//**Say the id is a randomly generated number, that I don't really care about now
}

我如何检查人 p 的姓名和年龄与成员 HashMap 中的另一个人不同?

最佳答案

为什么要循环?您可以简单地测试 key 是否存在:

if( members.containsKey( name ) ){
// duplicate
}

不过,您可以迭代:

for( Map.Entry<String,Integer> e: members.entrySet() ){
// use e.getKey(), e.getValue()
}

稍后

自从鲍里斯提出这个问题以来:

Map<String,Person> members

是将名称集映射到人员集的一种方法。如果年龄也有助于区分Persons,则必须注意Boris提示:将hashCode和equals添加到Person(都使用name和age来hashCode comp和比较),然后你就可以这样做

Set<Person> members

members.contains( p ) 会告诉你一个平等的 Person 是否已经是成员。

关于java - 你能像在 ArrayList 中那样循环遍历 HashMap 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28008742/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com