java ArrayList按照同一属性进行分组

yizhihongxing

要按照同一属性进行分组,我们需要用到Java中的Collections类和Comparator接口。

  1. 首先,我们需要为ArrayList中的对象定义一个属性,以便按照该属性进行分组。例如,我们定义一个Person类,其中包含name和age两个属性,我们想要按照年龄进行分组。则代码如下:
public class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}
  1. 接下来,我们创建一个ArrayList对象,并向其中添加若干Person实例。例如:
List<Person> persons = new ArrayList<>();
persons.add(new Person("Tom", 23));
persons.add(new Person("Jerry", 22));
persons.add(new Person("Mike", 24));
persons.add(new Person("Lucy", 23));
  1. 然后,我们需要实现Comparator接口,自定义比较器,以便按照年龄进行分组。代码如下:
public class AgeComparator implements Comparator<Person> {
    @Override
    public int compare(Person p1, Person p2) {
        return p1.getAge() - p2.getAge();
    }
}
  1. 我们使用Collections.sort()方法,并将AgeComparator作为参数传递进去,对ArrayList进行排序。该方法会根据比较器的实现对List进行排序。
Collections.sort(persons, new AgeComparator());
  1. 最后,我们遍历List中的元素,并按照年龄进行分组。
int age = persons.get(0).getAge();
List<Person> group = new ArrayList<>();
for (Person person : persons) {
    if (person.getAge() != age) {
        // 打印当前分组结果
        System.out.println("Age " + age + ": " + group);
        // 开始新的分组
        age = person.getAge();
        group.clear();
    }
    group.add(person);
}
// 打印剩余分组结果
System.out.println("Age " + age + ": " + group);
  1. 示例说明:

假设现在有如下模拟数据:

List<Person> persons = new ArrayList<>();
persons.add(new Person("Tom", 23));
persons.add(new Person("Jerry", 22));
persons.add(new Person("Mike", 24));
persons.add(new Person("Lucy", 23));
persons.add(new Person("John", 24));
persons.add(new Person("Amy", 23));
persons.add(new Person("Lisa", 22));

我们想按照年龄进行分组,样例输出如下:

Age 22: [Person{name='Jerry', age=22}, Person{name='Lisa', age=22}]
Age 23: [Person{name='Tom', age=23}, Person{name='Lucy', age=23}, Person{name='Amy', age=23}]
Age 24: [Person{name='Mike', age=24}, Person{name='John', age=24}]

另外一个示例,假设现在有如下模拟数据:

List<Person> persons = new ArrayList<>();
persons.add(new Person("A", 18));
persons.add(new Person("B", 28));
persons.add(new Person("C", 18));
persons.add(new Person("D", 28));
persons.add(new Person("E", 28));

我们想按照年龄进行分组,样例输出如下:

Age 18: [Person{name='A', age=18}, Person{name='C', age=18}]
Age 28: [Person{name='B', age=28}, Person{name='D', age=28}, Person{name='E', age=28}]

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java ArrayList按照同一属性进行分组 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • JS深入学习之数组对象排序操作示例

    《JS深入学习之数组对象排序操作示例》是一篇介绍JavaScript数组排序相关操作的文章,主要包含以下内容: 1. 数组对象排序 1.1 sort()方法 sort()方法是JavaScript中的一个数组排序方法,可以用于对数组的元素进行排序。sort()方法可以接收一个可选的排序函数作为参数,通过这个函数,我们可以实现自定义的排序规则。 语法为:arr…

    算法与数据结构 2023年5月19日
    00
  • 基于Go语言实现冒泡排序算法

    基于Go语言实现冒泡排序算法 什么是冒泡排序 冒泡排序(Bubble Sort)是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复地进行,因而得名“冒泡排序”。该算法因其简单的实现方式和易于理解的原理而广泛应用。 冒泡排序算法实现方式 冒泡排序的算法原理如下: 比较相邻的元素。如果第一个…

    算法与数据结构 2023年5月19日
    00
  • JavaScript实现经典排序算法之冒泡排序

    JavaScript实现经典排序算法之冒泡排序 什么是冒泡排序? 冒泡排序是一种简单的排序算法,从序列左侧开始比较两个相邻的元素,如果顺序不对就交换位置,直到序列末尾,这样一次遍历后,序列最后一个元素就是当前序列最大值。然后对剩余序列重复上述过程,直到整个序列有序。 算法实现 我们来看看如何用JavaScript实现冒泡排序。 function bubble…

    算法与数据结构 2023年5月19日
    00
  • Java快速排序案例讲解

    Java快速排序案例讲解 快速排序(Quicksort)是一种常见的排序算法,它的时间复杂度为O(nlogn),是一种效率较高的排序算法,在实际开发中也广泛应用。本文将介绍Java快速排序的实现过程以及具体实现。 快速排序介绍 快速排序是通过选择一个“基准数”,然后把整个数组分成两部分,分别为小于等于“基准数”的部分和大于“基准数”的部分。然后再对这两个部分…

    算法与数据结构 2023年5月19日
    00
  • JS/HTML5游戏常用算法之路径搜索算法 A*寻路算法完整实例

    非常感谢你对于本站文章的关注。下面是针对文章“JS/HTML5游戏常用算法之路径搜索算法 A*寻路算法完整实例”的完整攻略解析。 1. 介绍 本文主要讲解的是一种常用于解决路径搜索问题的算法—— A*寻路算法。使用该算法可以在搜索空间(如地图、游戏场景等)中找到一条最优路径,可应用于许多领域,如自动驾驶、游戏AI等。 2. 算法流程 该算法通过在搜索空间中创…

    算法与数据结构 2023年5月19日
    00
  • GO语言中常见的排序算法使用示例

    首先感谢你对“GO语言中常见的排序算法使用示例”的关注,下面是一个完整的攻略: GO语言中常见的排序算法 在GO语言中,常见的排序算法包括:冒泡排序、插入排序、选择排序、希尔排序、归并排序、快速排序、堆排序等。这些排序算法的具体实现方式有所不同,但都可以在GO语言的标准库中找到相应的方法。 冒泡排序 冒泡排序的基本思路是比较相邻的两个元素,如果它们的顺序错误…

    算法与数据结构 2023年5月19日
    00
  • c语言快速排序算法示例代码分享

    首先,我们需要了解什么是快速排序。快速排序(QuickSort)是一种排序算法,其采用了分治的思想,并使用递归的方式处理数据集合。它的基本思想是从待排序的数据集合中选择一个元素作为分界点(一般称为pivot),然后将小于pivot的元素放到pivot左边,大于pivot的元素放到pivot右边,最后将pivot放到中间位置。然后递归处理pivot左右两边的子…

    算法与数据结构 2023年5月19日
    00
  • JavaScript中的冒泡排序法

    JavaScript中的冒泡排序法 冒泡排序法就是通过比较任意两个相邻的元素,然后循环遍历整个数组,逐步将最大(或最小)的数移到最后一位。当没有相邻的元素需要互换位置的时候即可完成排序。冒泡排序法是常用的简单排序算法,虽然时间复杂度比高级算法如快速排序、堆排序等要高,但是对于小的数据集合,其性能表现要好于其他排序算法。 以下是冒泡排序法的具体实现: func…

    算法与数据结构 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部