在java中对数组列表进行分组和排序

移动应用程序

我在 SO 中查看了几个与排序相关的问题,但我无法完成我真正想要的。

我有一堂这样的课

class User{
    String userName;
    String phoneNumber;

    public User(String userName, String phoneNumber) {
        this.userName = userName;
        this.phoneNumber = phoneNumber;
    }
}

然后我添加了一些这样的数据

ArrayList<User> users = new ArrayList<User>();
users.add(new User("Aca","223554"));
users.add(new User("Ada","223544"));
users.add(new User("Cda","323544"));
users.add(new User("Bbc","323544"));
users.add(new User("Bla","323544"));
users.add(new User("Aka","123554"));
users.add(new User("Cla","323544"));

我想按用户名的User字母顺序对数据进行分组,比如

A-- Aca, Aka
B-- BBc , Bla
C-- Cda, Cla

后来我想把它放在 HashMap 中

Map<String,ArrayList<User>> userMap = new HashMap<String, ArrayList<User>>();

userMap.put("A", usersLisA); //usersLisA is an ArrayList of user whose name starts with A
userMap.put("B", usersLisB); //usersLisB is an ArrayList of user whose name starts with B

等等 。

它有点像电话簿,他们按字母顺序对用户进行排序和分组的方式

这里要注意一件事,我想在Java7.

任何帮助将不胜感激。

路易斯·费罗略

你有两个选择。让我们看第一个:

  • 第 1 步:遍历您的ArrayList<User> users并将 user.userName 放入一个String[] usersArr
  • 第 2 步:对数组进行排序 Collections.sort(Arrays.asList(usersArr));
  • 第 3 步:定义一个int startIndex = 0、一个int endIndex和 对已排序数组的循环,并且:

    if((int) previousString.charAt(0) < (int) currentString.charAt(0)) {
        endIndex = currentString_position-1;
        TreeMap.put(previousString.charAt(0), usersArr.subList(startIndex, endIndex));
        startIndex = currentString_position;
    }
    

现在,让我们看看第二个选项:

  • 第 1 步:为您的类 Users 覆盖 hashCode() 和 compareTo(),以便您以后可以按 userName 对其进行排序
  • 第 2 步:对 ArrayList 进行排序 Collections.sort(Arrays.asList(users));
  • 第 3 步:与上一个选项中的第 3 步相同

请注意,我将您的 HashMap 更改为 TreeMap。如果 Map 中键的顺序很重要,您应该使用 TreeMap,因为在迭代键时,它们将是有序的。检查这个帖子

希望这个答案让你更清楚。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Java中对数组类型列表进行排序?

使用多个值对数组进行分组,并基于循环和排序数组中的组值对数组求和

如何对数组对象进行分组和排序

如何在javascript中对数据数组进行分组和排序?

如何在重复一些数据的php数组中对数据进行排序和分组?

如何在 angular2+ 中按字母顺序对数组进行排序、分组和划分

在Java中对数组的ArrayList进行排序

在foreach中对数组中的项进行分组和求和

在Java中对数组中的字符串进行分类和分组

对数组中的字符串项列表进行排序

如何在PostgreSQL中对数组进行分组和连接

对数组中的项目进行分组和计数的简洁方法

根据内部列表中的字段对Java中的两个嵌套列表进行排序和分组

如何在java和python中以恒定时间对数组进行排序?

在Go中对数组进行排序和比较

在C中对数组进行排序和分析

如何在C ++中对数组进行排序和检查?

对数组对象进行分组和求和

在Java中以降序对数组进行排序

如何在Java中对数组进行排序并跟踪索引

如何通过匹配内部数组中的值来对数组列表中的数组进行分组?

如何对数组元素基特定字符进行分组和排序

在php中对数组元素进行分组

如何对数组中的项目进行分组?

如何对数组中的对象进行分组

在Python中对嵌套列表进行排序和分组

在Kotlin中对单个列表进行分组和排序的更好方法

对列表中的前 3 个值进行分组和排序

对数组进行排序并将其分组为特定值