说我像这样创建一些对象类
public class thing {
private String name;
private Integer num;
public oDetails (String a, Integer b) {
name = a;
num = b;
}
...gets/ sets/ etc
现在,我想创建一个arraylist来容纳许多这样的对象类。
ArrayList<thing> myList = new ArrayList<thing>;
thing first = new thing("Star Wars", 3);
thing second = new thing("Star Wars", 1);
myList.add(first);
myList.add(second);
我想包含某种逻辑,以便在这种情况下...当我们尝试添加对象“ second”而不是向arrayList添加新对象时,我们将second.getNum()添加到first.getNum()。因此,如果要遍历ArrayList,它将是
"Star Wars", 4
我在想出一种优雅的方式来解决这个问题时遇到了麻烦。随着arraylist的增长,搜索它以确定是否存在重复的名称项变得很麻烦。有人可以为此提供一些指导吗?
您将必须创建自己的方法来检查name
Thing类的字段是否设置为“ Star Wars”,然后将其添加到num
Class Thing 的相应字段中,这是一种可能的解决方案。
另一种解决方案是使用Map
以name字段作为键,以num字段作为值的a。
例如:
public class Thing
{
private String name;
private int num;
public Thing(String name, int num)
{
this.name = name;
this.num = num;
}
}
public class ThingMap
{
Map<String, Integer> thingMap;
public ThingMap()
{
this.thingMap = new HashMap<>();
}
public void put(Thing t)
{
String k = t.getName();
Integer v = t.getNum();
if(thingMap.get(k) == null) //no entry exists
{
thingMap.put(k, v);
}
else //entry exists
{
//add to the current value
thingMap.put(k, thingMap.get(k) + v);
}
}
public Integer get(String k)
{
return this.thingMap.get(k);
}
}
public class TestThing
{
public static void main(String[] args)
{
ThingMap tMap = new ThingMap();
Thing a = new Thing("Star Wars", 3);
Thing b = new Thing("Star Wars", 1);
tMap.put(a);
tMap.put(b);
System.out.println("Current value: " + tMap.get(a.getName());
}
}
希望这可以帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句