我的超类有$repository = $this->manager->getRepository('Application\UserBundle\Entity\User');
$user = $repository->findOneBy(array('apiKey' => $apiKey));
return empty($user) ? $user : $user->getUsername();
“M”,其值为ArrayList,键的范围为0 - N,基于矩阵。我在子类中创建了一个名为swap()的方法,该方法获取特定行“x”(Map的键)的ArrayList,并将其与另一行“y”交换。下面大致是我的swap()方法:
HashMap
这绝对是我想要的工作,但我想知道是否有更有效的方法?特别是你可以做同样的事情而不创建数组“temp”,即只使用java Map函数?
编辑1: 我知道有一种方法可以在不创建新的ArrayList的情况下完成上述操作,但是如果让我说我希望ArrayList中的乘法值具有类似2的常量并且在执行此操作后更新地图上的特定ArrayList,我仍然可以不创建临时数组就可以做到吗?
答案 0 :(得分:1)
如果您不想创建额外的ArrayList temp
,请不要这样做:
public void swap(int currentRow, int hRow ) {
ArrayList<Double> temp = super.M.get(hRow);
super.M.put(hRow, super.M.get(currentRow));
super.M.put(currentRow, temp);
}
答案 1 :(得分:0)
没有理由创建新的ArrayList
,您可以这样做:
ArrayList<Double> temp = super.M.get(hRow);
super.M.put(hRow, super.M.get(currentRow));
super.M.put(currentRow, temp);
或者,假设put
返回旧值,您甚至可以写:
ArrayList<Double> temp = super.M.put(hRow, super.M.get(currentRow));
super.M.put(currentRow, temp);
甚至:
super.M.put(currentRow, super.M.put(hRow, super.M.get(currentRow)));