合并模型元素的ArrayList而不重复

时间:2016-05-12 05:52:12

标签: java android

嗨我有两个数组列表List l1和List l2,Name,age,sex,uniqID,marks是列表中的数据。我想加入l1和l2而不重复.uniqID对每个学生都是唯一的。我一直在循环遍历所有元素并比较每个元素。但是我的列表会有大约2万个项目,所以循环花费了太多时间。我试过了 all the answers from this post没有任何对我有用的东西。有什么建议。?

2 个答案:

答案 0 :(得分:1)

简单示例:

Person

equals现在实现了equals和hashCode。 java使用hashCode来确定对象是否是另一个对象的副本。 hashCode本身并不是必需的,但建议一起覆盖equalsList<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'];