嗨我有两个数组列表List l1和List l2,Name,age,sex,uniqID,marks是列表中的数据。我想加入l1和l2而不重复.uniqID对每个学生都是唯一的。我一直在循环遍历所有元素并比较每个元素。但是我的列表会有大约2万个项目,所以循环花费了太多时间。我试过了 all the answers from this post没有任何对我有用的东西。有什么建议。?
答案 0 :(得分:1)
简单示例:
Person
类equals
现在实现了equals和hashCode。 java使用hashCode
来确定对象是否是另一个对象的副本。 hashCode
本身并不是必需的,但建议一起覆盖equals
和List<Person> listA = new ArrayList<>();
List<Person> listB = new ArrayList<>();
// filling the lists omitted
List<Person> mergedList=new ArrayList<>();
mergedList.addAll(listA);
mergedList.removeAll(listB);
mergedList.addAll(listB);
。
如果实现了这两种方法,您只需使用java中的内置方法和数据结构:
使用列表:
List<Person> listA = new ArrayList<>();
List<Person> listB = new ArrayList<>();
// filling the lists omitted
Set<Person> mergedSet=new HashSet<>();
mergedSet.addAll(listA);
mergedSet.addAll(listB);
或使用套装:
AuthTest.php
答案 1 :(得分:0)
您可以组合两个arraylist并将其传递给HashSet对象 由于Set不包含重复项,您可以执行以下操作
<script type="text/javascript">
function Savefile() {
var tbl = document.getElementById("modaltable");
var final = " ";
var finalvalue = " ";
if (tbl != null) {
for (var i = 0; i < tbl.rows.length; i++) {
for (var j = 0; j < tbl.rows[i].cells.length; j++) {
var text = document.getElementById("Comment").value;
var typeofscram = document.getElementById("<%=DropDownList2.ClientID %>").value;
var scramblerreq = document.getElementById("<%=DropDownList1.ClientID %>").value;
var final = text + " " + typeofscram + " " + scramblerreq;
}
finalvalue += final;
}
}
var myCsv = finalvalue;
window.open('data:text/csv;charset=utf-8,' + escape(myCsv));
}
</script>
如果要保留元素的顺序,请使用LinkedHashSet
$name = $_POST['name'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$comment = $_POST['comment'];