我正在研究基本的学生系统。学生有他的sudy字段。每个研究领域都分配了一些科目。每个学生都被分配了两个科目。现在我需要得到并打印所有分配到他的研究领域的其他科目,这些科目还没有分配给他。这是我尝试过的
ArrayList<Predmet> dostupnePredmety = new ArrayList<Predmet>();
for (Predmet vPredmet : this.loggedStudent.getOdbor().getPredmety()) {
for ( Predmet sPredmet : this.loggedStudent.getPredmety()) {
if (vPredmet != sPredmet) {
dostupnePredmety.add(vPredmet);
}
}
}
int i = 0;
for (Predmet dPredmet : dostupnePredmety) {
System.out.println("[" + i + "]" + dPredmet.getNazov() + " " + dPredmet.getPocetStudentov() + "/" + dPredmet.getCapacity());
i++;
}
它不起作用,因为我使用的第二个for循环将第一个列表的元素与第二个列表的每个元素进行比较,所以它添加了所有元素。即使是我不想要的。这很明显,因为第一个列表中的对象需要与第二个列表中的所有元素相同,才能工作。我想不出正确的解决办法。
有两种可能的解决方案,我推荐第二种,因为它在计算上更有效。
先决条件:
对于这两种解决方案,您需要首先重写equals()
和hashCode()
方法。
解决方案1(较短代码):
for (Predmet vPredmet : this.loggedStudent.getOdbor().getPredmety()) {
if (!this.loggedStudent.getPredmety().contains(vPredmet)) {
dostupnePredmety.add(vPredmet);
}
}
解决方案2(计算效率最高):
Set<Predmet> set = new HashSet<>();
for (Predmet predmety: this.loggedStudent.getPredmety()) {
set.add(predmety);
}
for (Predmet vPredmet : this.loggedStudent.getOdbor().getPredmety()) {
if (!set.contains(vPredmet)) {
dostupnePredmety.add(vPredmet);
}
}
问题内容: 我有一个像下面这样的列表,其中第一个元素是id,另一个是字符串: 我只想从此元组列表创建ID列表,如下所示: 我将使用此列表,因此它必须是整数值的列表。 问题答案:
假设我有两个列表,现在listOld包含旧员工信息,listNew包含新员工信息 我如何比较这两个列表并返回新列表,其中包含,添加的新员工列表,包含,删除的员工列表,包含上次更新已更改的员工的新列表? 我只能想到迭代列表和比较,可能最终几乎是O(n2)时间,这可以由任何util类更有效地完成吗?
问题内容: 我有一个这样的清单: 我想要这样的结果(列表中的 每个 第一个元素): 我尝试了[:: 1] [0],但没有用 我几周前才开始学习Python。Python版本= 2.7.9 问题答案: 您可以从列表理解中的每个元素获取索引 同样,要学究,您没有的,您没有的。
问题内容: 如何以简洁明了的方式找出两个列表中的第一个公共元素(在本例中为“ 2”)?任何列表都可以为空,也可以没有公共元素-在这种情况下,没有一个很好。 我需要它来向新手展示python,所以越简单越好。 UPD:顺序对于我的目的并不重要,但让我们假设我正在寻找x中的第一个元素,该元素也出现在y中。 问题答案: 这应该很简单 几乎和它一样有效 (要获得更有效的解决方案,请检查Ashwini Ch
问题内容: 我有一个带有包含列表对象的列的Pandas DataFrame 如何访问每个列表的第一个元素并将其保存到DataFrame的新列中?要获得这样的结果: 我知道这可以通过遍历每一行来完成,但是有什么“ pythonic”方法吗? 问题答案: 您可以使用和功能
有人请让我知道我如何才能达到预期的结果。如有任何帮助,不胜感激。 谢谢