假设我有3个学生阵列,[A,B,C]彼此之间是非独特的(即A阵列可能有一个学生也在阵列B中找到)。我正在寻找一种有效的方法来过滤这些数组,使得每个数组都是唯一的,从A开始,然后是B,然后是C(即数组A和B中的学生最终将出现在A列表中,并从B列表中删除因为A在B)之前。如何在分别保留阵列A,B,C阵列的同时执行此操作。 (即我不能将所有学生都放入一套,因为他们失去了与他们最初属于哪个名单的关联)。
student对象具有可用于排序/过滤的id属性。 玩具问题仅适用于3个列表(它可以扩展到更大的列表,这就是我寻找最佳解决方案的原因)
SELECT tbl_uploads.file_name, tbl_users.user_id, tbl_users.user_name, tbl_collab.collab_userid, tbl_collab.collab_username
FROM tbl_uploads
left join tbl_collab on tbl_collab.file_name = tbl_uploads.file_name
left join tbl_users on tbl_uploads.user_id = tbl_users.user_id
group by tbl_uploads.file_name
答案 0 :(得分:1)
您所要做的就是创建一个包含所有唯一值的HashSet。
最后,您应该拥有所有唯一列表,而不会重复数字。
答案 1 :(得分:0)
鉴于a, b, c
是学生列表,并且学生班级正确实施equals()
(和hashCode()
),您可以从后续列表中删除之前列表中显示的学生:
b.removeAll(a);
c.removeAll(a);
c.removeAll(b);
当然,保留在列表中的学生的顺序。