比较ArrayLists中的字符?

时间:2017-06-13 09:07:29

标签: java android arraylist char

我正在尝试使用自定义适配器填充RecyclerView。此适配器接受具有setter和getter的模型。该模型包含三个参数:String username,int proPic和int bckgImg。我想要实现的是具有按字母顺序排序的列表的RecyclerView。我使用以下代码填充模型:

private ArrayList<FriendsModel> friendsData = new ArrayList<>(0);
friendsData.add(new FriendModel("Erick", R.drawable.default_pro_pic, R.drawable bckgImg);

完成填充FriendModel的5个对象后,我继续比较ArrayList中找到的字符:

for(char alph = 'A'; alph <= 'Z'; alph++){
List<String> friends = getFriends(alph);

if(friends.size() > 0){
//Populate the Sorted Alphabetical view
}
 }

private List<String> getFriends(char alph) {
//Empty List used to populate when comparing existing model to alphabet
List<String> friends = new ArrayList<>();

//5 objects of FriendsData with three parameters
for (int i = 0; i < friendsData.size(); i++){
//If the first string parameter character at position 0 is equal to alph
 if(friendsData.get(i).toString().charAt(0) == alph){
 friends.add(friendsData.get(i).toString());
}
 }

return friends;
}

我不确定我是否正确地执行此操作,基于其模型比较ArrayList中的字符的适当或正确方法是什么?

3 个答案:

答案 0 :(得分:1)

不使用构造函数初始化变量,而是始终使用setter方法,这类也称为pojo(Plain old java objects)或VO(value objects)。

假设您的FriendModel类如下所示..

primary="true"

无论你做什么,

e1

答案 1 :(得分:0)

自定义比较器应该提供帮助

Collections.sort(list, new Comparator<String>() {
    @Override
    public int compare(String s1, String s2) {
        return s1.compareToIgnoreCase(s2);
    }
});

或者它不起作用,所以我们

Collections.sort(list, String.CASE_INSENSITIVE_ORDER);

答案 2 :(得分:0)

使用模型对列表进行排序的正确方法是定义Comparator。对于您当前使用的示例。

Collections.sort(friendsData, new Comparator<FriendsModel>() {
@Override
public int compare(FriendsModel obj1, FriendsModel obj2) {
    return obj1.getUsername.compareTo(obj2.getUsername); //For Ascending order
//OR
    return obj2.getUsername.compareTo(obj1.getUsername); //For Descending order
  }
});

&#34;比较&#34;函数比较它的两个参数的顺序。返回负整数,零或正整数,因为第一个参数小于,等于或大于第二个参数。