Java数组排序和筛选

Java数组排序和筛选,java,sorting,filtering,Java,Sorting,Filtering,因此,我有一个“csv”文件,其中包含以下信息: PersonName,Likes,Dislikes,DOB,MOB John Lauzon,Games,,14,09 Jane Smith,Music,,15,02 Hugh Mungus,Jokes,,01,04 此代码按DOB(日期)对该数组进行排序,并应按txtBDays中的值对其进行过滤,该值表示MOB(出生月份),并在名为“txtDisplayArea”的文本区域中显示结果,但过滤位工作不正常 public void getBDay

因此,我有一个“csv”文件,其中包含以下信息:

PersonName,Likes,Dislikes,DOB,MOB
John Lauzon,Games,,14,09
Jane Smith,Music,,15,02
Hugh Mungus,Jokes,,01,04

此代码按DOB(日期)对该数组进行排序,并应按txtBDays中的值对其进行过滤,该值表示MOB(出生月份),并在名为“txtDisplayArea”的文本区域中显示结果,但过滤位工作不正常

public void getBDays() {        
    for (int i =0; i < numberOfEntries; i++) {
        sortArray[i] = FriendInfo[i].getDOB() + "\t" + FriendInfo[i].getMOB() + "\t" + FriendInfo[i].getName() + "\t" + FriendInfo[i].getLikes() + "\t\t" + FriendInfo[i].getDislikes();
    }
    Arrays.sort(sortArray, 0, numberOfEntries);       

    txtDisplayArea.setText("Birthdays for the month of: " + txtBDays.getText() + "\n\n");
    txtDisplayArea.append("Date \tMonth \tName \t\tLikes \t\tDislikes \n");
    txtDisplayArea.append("------------------------------------------------------------------------------------- \n");

    for (int i = 0; i < numberOfEntries; i++) {
        //if (txtBDays.equals(FriendInfo[i].getMOB())) {
        if (txtBDays.getText().equals(FriendInfo[i].getMOB())) {
            txtDisplayArea.append(sortArray[i] + "\n");
        }
    }
}
public void getBDays(){
for(int i=0;i

默认情况下,当前月份的txtBDays中的值为03,因此3月份的值为03,但当我运行应用程序时,过滤无法正常工作。下面是结果屏幕截图的链接


非常感谢您的帮助。

sortArray
的类型是什么,您是否定义了一个
compareTo
方法?过滤(显然)不作为
txtBDays.getText()
返回一个不等于
FriendInfo[i].getMOB()
的值,因此首先要添加一个
System.out.println(String.format(“[%s]=[%s]”,txtBDays.getText(),FriendInfo[i].getMOB())
到您的for循环,并检查您试图比较的值是否真的相等。@zeppelin它给出了这个。[03]=[03][03]=[03][03]=[03]我看了一下csv文件,看到了3个结果,我用其他数字尝试了一下,似乎效果不错。我只是在显示结果时遇到了问题。@TimBiegeleisen我是初学者,所以我肯定会犯错误,但据我所知,这是一个字符串数组,除了行之外,还有if(txtBDays.getText().equals(FriendInfo[I].getMOB()){没有compareTo方法。
[03]==[03][03]=[03][03]=[03]
因此getMOB()基本上总是返回与您的筛选器匹配的
03
,因此所有行都包含在结果中,如果您的数据与此不匹配(即MOB有其他值),您应该查看“getMOB”(),以查看它是否真的返回正确的字段。