gpt4 book ai didi

java - Android/Java 如何在 ArrayList 中高效使用多个比较器

转载 作者:行者123 更新时间:2023-12-01 18:30:55 25 4
gpt4 key购买 nike

我有一个Java名为 Friend 的类

public class Friend {   
public String friendsUserName;
public boolean isFavorite;
public boolean isFriend;
}

我得到Json来自服务器的文件包含 JsonArray此类Friend 。我用Gson类来解析和映射 JsonArrayList<Friend> .我必须按以下方式对数组进行排序

  1. 顶级元素为 Friend谁是isFavoriteisFriend
  2. 然后是ArrayList包含剩余Friend谁只是isFriend
  3. 最后是ArrayList包含Friend哪里isFriendFalse .

因此,我可以使用此 ComparatorChain 中描述的方法

或者我可以使用以下方式正确排序 ArrayList<Friend>

 public ArrayList<Friend> friendsList;
public void sortArrayList() {
ArrayList<Friend> favoriteList = new ArrayList<Friend>();
ArrayList<Friend> friendOnlyList = new ArrayList<Friend>();
ArrayList<Friend> nonFriendList = new ArrayList<Friend>();

for (int length = friendsList.size(), i = length - 1; i >= 0; i--) {
Friend friend = friendsList.get(i);
if (friend.isFriend) {
if (friend.isFavorite) {
favoriteList.add(friend);
} else {
friendOnlyList.add(friend);
}
} else {
nonFriendList.add(friend);
}
friendsList.remove(i);
}
addAllAndClear(favoriteList);
favoriteList = null;

addAllAndClear(friendOnlyList);
friendOnlyList = null;
addAllAndClear(nonFriendList);
nonFriendList = null;

}

public void addAllAndClear(ArrayList<Friend> updatedList) {
Collections.sort(updatedList, nameComparator);
friendsList.addAll(updatedList);
updatedList.clear();
updatedList = null;

}

Comparator<Friend> nameComparator = new Comparator<FriendListResponse.Friend>() {
@Override
public int compare(Friend lhs, Friend rhs) {
return lhs.friendsUserName.compareTo(rhs.friendsUserName);
};
};

Efficiency明智的我应该遵循 ComparatorChain或者我自己的方法。我正在为Android开发这个平台,所以Memory ManagementEfficiency是最优先考虑的。 附:我不擅长用工具比较Efficiency .

最佳答案

尝试以下比较器:

Comparator<Friend> favoriteComparator = new Comparator<FriendListResponse.Friend>() {
@Override
public int compare(Friend lhs, Friend rhs) {
int i=0,j=0;
if(lhs.isFavorite()&&lhs.isFriend())
i++;
if(lhs.isFriend())
i++;
if(rhs.isFavorite()&&rhs.isFriend())
j++;
if(rhs.isFriend())
j++;
return i-j;
};
};

排序时:

Collections.sort(friendsList,favoriteComparator);

关于java - Android/Java 如何在 ArrayList 中高效使用多个比较器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24264918/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com