我们可以根据其他列表制作一个列表的顺序吗?

时间:2015-10-15 05:50:55

标签: java

我有两个数组列表list1list2,我希望list2顺序为list1的顺序。有没有办法做到这一点?在一个列表中,我从数据库获得了表现最好的员工,并且使用表现最佳的员工ID,使用"in"子句从数据库第二次获得了列表。

List<Long> list1 = new ArrayList<Long>();
list1.add(5645);
list1.add(2312);
list1.add(7845);
list1.add(1212);

和其他对象类型列表:

List<Employee> list2 = new ArrayList<Employee>();
list2.add(new Employee(1212, "A"));
list2.add(new Employee(2312, "V"));
list2.add(new Employee(5645, "D"));
list2.add(new Employee(7845, "T"));

其中list1显示前4名的员工ID;

我使用id从数据库中获取了员工详细信息并获得了此列表。

现在我想将list2的顺序设为list1以显示在html页面上。

3 个答案:

答案 0 :(得分:0)

List<Long> list1 = new ArrayList<Long>();
list1.add(5645);
list1.add(2312);
list1.add(7845);
list1.add(1212);

和其他对象类型列表:

List<Employee> list2 = new ArrayList<Employee>();
list2.add(new Employee(1212, "A"));
list2.add(new Employee(2312, "V"));
list2.add(new Employee(5645, "D"));
list2.add(new Employee(7845, "T"));    

    Collections.sort(list1, new Comparator<Long>() {

        @Override
        public int compare(Parameter) {
            //Add your logic here for sorting
        }

    });
    // now sort the list B according to the changes made with the order of
    // items in list1
    Collections.sort(list2, new Comparator<Employee>() {

        @Override
        public int compare(Parameter) {
          //                your logic for sorting.
        }

    });

可以通过此链接为您提供帮助:In Java how do you sort one list based on another?

答案 1 :(得分:0)

只需迭代productFlavors { dev { applicationId "com.swagata.devbuild" } prod { applicationId "com.swagata.prodbuild" } } ,并为每个项找到list1中的匹配元素。无需排序。

list2

这使用Apache Commons Collections的CollectionUtils

或者,为了获得更好的性能,请先构建List<Employee> sortedList = new ArrayList<>(); for (Long id : list1) { Employee match = CollectionUtils.find(list2, e -> e.id.equals(id)); // cannot sort, if list2 does not contain the id, or put your rule for this case assert match != null; sortedList.add(match); }

Map

答案 2 :(得分:0)

您应该做的是让数据库对结果进行排序:


var query = connection.query(' SET @p1   =   '"  + P_MEMBER_ID           + "'  ; " +
            " SET @p2      =       '"  + P_MEMBER_ID_TEST      + "'  ; " +
            " SET @p3      =       @insertResults'"  + "'  ; " +
            "CALL PROC_MEMBER_INSERT(" +
                " @p1   ,  "  +
                " @p2   ,  "  +
                " @p3 '); "  +
             "SELECT @p3;")";
query
  .on('fields', function(fields, index) {
    // the fields for the result rows that follow
  })
  .on('result', function(row, index) {
    // index refers to the statement this result belongs to (starts at 0)
  });
console.log('\n Output ' + row[#index_of_last_select]);

如果您坚持使用Java进行排序,请使用自定义Comparator

SELECT name, score FROM Employees
  ORDER BY score DESC
  LIMIT 4;