我在 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
.
任何帮助将不胜感激。
你有两个选择。让我们看第一个:
ArrayList<User> users
并将 user.userName 放入一个String[] usersArr
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;
}
现在,让我们看看第二个选项:
Collections.sort(Arrays.asList(users));
请注意,我将您的 HashMap 更改为 TreeMap。如果 Map 中键的顺序很重要,您应该使用 TreeMap,因为在迭代键时,它们将是有序的。检查这个帖子。
希望这个答案让你更清楚。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句