我被困在这个我无法理解的问题上。我需要编写一种方法来将特定“行为”的“投票”数量增加一,然后打印出该特定行为的更新投票数。我在这里也使用 ArrayLists 来指出。
问问题
3229 次
4 回答
1
这是您要遵循的逻辑:
1:遍历 'acts' 的 ArrayList
2:检查指定的“行为”
3:如果 'act' 等于指定的 'act',则将 1 添加到您的计数器变量(votes++)
这是我将在没有代码的情况下提供的尽可能多的信息,以显示您已尝试过的内容!
于 2012-12-03T17:48:59.720 回答
0
一个更有效的投票计数器。
class VoteCounter<T> {
final Map<T, AtomicInteger> actToCounterMap = new HashMap<>();
public void raiseVoteForAct(T id) {
AtomicInteger ai = actToCounterMap.get(id);
if (ai == null)
actToCounterMap.put(id, ai = new AtmoicInteger());
ai.incrementAndGet();
}
}
而不是AtomicInteger
你可以使用new int[1]
,但它相对难看。;)
于 2012-12-03T18:50:46.090 回答
0
您可以在 java 中打印出整个对象,例如
System.out.println("Array list contains: " + arrayListName);
它将打印数组的内容而不遍历每个值,尽管它可能有奇怪的语法。至于“行为”,我假设你的意思是对象,如果你想将投票数迭代一个,你可以有一个这样的类:
public class Act{
int votes = 0;
public void increaseVote(){
votes ++;
//You can also do votes = votes + 1, or votes += 1, but this is the fastest.
}
//While were at it, let's add a print method!
pubic void printValue(){
System.out.println("Votes for class " + this.getClass().getName() + " = " + votes + ".");
}
}
最后,对于带有 arrayList 的类:
class classWithTheArrayList {
private ArrayList<Act> list = new ArrayList<Act>();
public static void main(String[] args){
Act example1 = new Act();
list.add(example1);
//ArrayLists store a value but can't be changed
//when in the arraylist, so, after updating the value like this:
Act example2 = new Act();
example2.increaseVote();
//we need to replace the object with the updated one
replaceObject(example1, example2);
}
public void replaceObject(Object objToBeRemoved, Object objToReplaceWith){
list.add(objToReplaceWith, list.indexOf(objToBeRemoved); //Add object to the same position old object is at
list.remove(objToBeRemoved); //Remove old object
}
}
于 2012-12-03T17:57:27.333 回答
0
您可以使用地图:
Class VoteCounter {
Map<Integer, Integer> actToCounterMap = new HashMap<Integer, Integer>();
public void raiseVoteForAct(int actId) {
if (actToCounterMap.contains(actId) {
int curVote = actToCounterMap.get(actId);
curVote++;
actToCounterMap.put(actId, curVote);
} else {
// init to 1
actToCounterMap.put(actId, 1);
}
}
}
于 2012-12-03T17:48:42.567 回答