当前位置: 首页 > 知识库问答 >
问题:

比较数组列表中的字符?

上官和韵
2023-03-14

我试图用自定义适配器填充RecycraView。此适配器接受具有setters和getters的模型。此模型包含三个参数:String username、int proPic和int bckgImg。我试图实现的是一个回收站视图与字母排序列表。我使用以下代码填充模型:

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个答案

刁瀚昂
2023-03-14

使用模型对列表进行排序的正确方法是定义比较器。对于当前的示例,您使用了use。

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
  }
});

“compare”函数比较其两个参数的顺序。返回负整数、零或正整数,因为第一个参数小于、等于或大于第二个参数。

长孙作人
2023-03-14

自定义比较器应该有所帮助

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);
金霄
2023-03-14

不要使用构造函数来初始化变量,总是使用setter方法,这样的类也被称为pojo(普通的旧java对象)或VO(值对象)。

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

public class FriendModel{
    String username;
    int proPic;
    int bckgImg;

    public FriendModel(){}

    //redundant constructor, you can remove this since you are using setter methods now.
    public FriendModel(String username, int proPic, int bckgImg){
        this.username=username;
        this.proPic=proPic;
        this.bckgImg=bckgImg;
    }

    //you'll need the below getters and setters..
    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public int getProPic() {
        return proPic;
    }

    public void setProPic(int proPic) {
        this.proPic = proPic;
    }

    public int getBckgImg() {
        return bckgImg;
    }

    public void setBckgImg(int bckgImg) {
        this.bckgImg = bckgImg;
    }

}

无论你在哪里做以下事情,

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
 String username=friendsData.get(i).getUsername();      //get the username
 if(username.charAt(0) == alph){                        //compare the username with charater in alph variable
 friends.add(username);                                 //add in another list
}
 }

return friends;
}
 类似资料:
  • 我试图将输入与arraylist中的值进行比较。 前任;我有一个arraylist: 数组的每个索引在我的程序中代表一个唯一的属性。e、 g索引0代表,索引1代表等。如果我做返回第二个数组。 我正在尝试将与每个数组中的第二个元素进行比较。所以假设我运行这个,我希望它遍历每个数组中的每个[1],如果该索引匹配,则返回true。 因此,我希望它将'number'(1102)与每个第一个索引元素进行比较

  • 嗨,我需要打印我的最高工资的人的方法。我有女巫雇员和女巫学生名单。当学生的平均成绩在4.5分以上时,他可以得到500英镑的薪水。 我有这样方法: 这是Person类: 这是学生课堂: 我需要的方法为最好的支付的人和方法总和所有人的收入。

  • 如何比较两个列表是否相等验证数据来自Excel工作表。我需要验证两个列表是否相同,并且列表中没有附加元素或缺少元素。我不需要对列表进行排序。打印输出CAGID Excel data=CAGID Web列表

  • 我一直认为numpy数组比list更紧凑,占用的内存更少,但是,对于三维float64 np数组, 输出是,, 列表占用的内存要小得多。使用?如果是,我能做些什么来提高np数组内存使用率吗? ###################### 使用pympler@J_H(pympler似乎不能处理列表中的数组,比如list(一个3-D数组) 谢谢大家!!

  • 我有以下数组列表 现在我需要比较这两个数组,并检查是否有id中的任何值存在于empIds中。如果是,我需要以布尔值true退出。我是这样做的。 但这需要很多时间。有人能帮我优化一下吗?

  • 问题内容: 我是Java的新手:) 我有2个字符串列表,我想知道比较这两者的最有效方法是什么,并得到一个包含另一个字符串的结果数组。例如,我有一个名为oldStrings的列表和一个名为Strings的列表。我已经看过Comparator函数,但是还不完全了解它的工作原理,现在我想我可以创建一个for循环,遍历每个字符串,然后保存该字符串: 此列表中最多包含200个字符串。这是解决此问题的最佳方法

  • 我正在尝试编写一个日历。我将我的约会保存在另一个ArrayList中的两个不同的ArrayList中。 字符串(Subject,Place,People)进入另一个ArrayList=arstr中的第一个ArrayList 整数(Date和Time)进入另一个ArrayList=arInt中的第二个ArrayList 当我创建约会时,我希望根据日期对其进行排序。所以如果我想添加一个新的约会,它应该

  • 我必须将元组与元组列表进行比较,如果整数小于列表中的任何元组,则返回True。例如,如果我有将返回True,因为单独元组(“番茄”,10,5)中的整数比列表中的元组(“橙色”,11,6)小,但是如果我有将返回False。 我试试这个 但不工作时,它应该返回假,我不知道为什么? 注意:字符串对于这个问题并不重要,我必须忽略它。