有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

基于名称的java组和排序ArrayList

遇到以下问题。我从数据库中填充了一个ArrayList,如下所示。但我发现我需要根据名称对列表进行分组(如果第一个列表中的其他两个值与第二个列表匹配)。分组后,我需要按升序对名字进行排序。我找不到解决这个问题的办法。我应该如何迭代它,对名称进行分组和排序

VerDetail(0)

日期:2016年8月3日 类型:收入 姓名:汤姆

VerDetail(1)

2016年8月3日 SSN 汤姆

VerDetail(2)

2016年8月3日 收入 本

VerDetail(3)

2016年8月3日 SSN 本

VerDetail(4)

2016年8月3日 收入 杰克

VerDetail(5)

2016年8月3日 SSN 杰克

我想把我的名单按名字分组如下

VerDetail(0)

2016年8月3日 收入 本 杰克 汤姆

VerDetail(1)

2016年8月3日 SSN 本 杰克 汤姆


共 (1) 个答案

  1. # 1 楼答案

    通过使用集合的sort()方法,可以按分组对其进行排序

    public class SortTest {
    
        @Test
        public void test() {
            List<Integer> list = new ArrayList<Integer>();
            list.add(1);
            list.add(2);
            list.add(3);
            list.add(4);
            list.add(1);
    
            System.out.println("Unsorted: " + list);
    
            Collections.sort(list);
    
            System.out.println("Sorted: " + list);
        }
    
    }
    

    输出:

    Unsorted: [1, 2, 3, 4, 1] 
    Sorted: [1, 1, 2, 3, 4]
    

    资源链接:How to group elements in ArrayList<CustomObject>


    在Java8中

    使用Collectors类和streams,可以执行以下操作:

    Map<String, List<Person>> mapByName = allPeople.stream()
                                                   .collect(Collectors.groupingBy(Person::getName));
    

    资源链接:Group by field name in Java