Java 如何解析对象数组并将特定属性的元素保存到不同的数组?

Java 如何解析对象数组并将特定属性的元素保存到不同的数组?,java,arrays,object,Java,Arrays,Object,我有一个调用记录数组,我想将调用配置为“DNC”的调用记录存储在另一个数组中。该函数打开一个csv文件,将整个文件读入一个对象数组并设置属性。原始数组包含680个对象记录。在my object setters后面有一个if语句,它表示if userArray[count].getDisposition==“DNC”,然后将此记录添加到我的新数组DNC_列表[DNC_count]中,并递增DNC_count++ dnc_计数初始化为0,在进程结束时,仍然为0。我的原始数组中有4条记录的属性为“DN

我有一个调用记录数组,我想将调用配置为“DNC”的调用记录存储在另一个数组中。该函数打开一个csv文件,将整个文件读入一个对象数组并设置属性。原始数组包含680个对象记录。在my object setters后面有一个if语句,它表示if userArray[count].getDisposition==“DNC”,然后将此记录添加到我的新数组DNC_列表[DNC_count]中,并递增DNC_count++

dnc_计数初始化为0,在进程结束时,仍然为0。我的原始数组中有4条记录的属性为“DNC”。有人能告诉我我的代码有什么问题吗?为什么它不能识别什么时候是DNC

public static void myCSVReader(String filename) {
    String path = "C:\\Users\\My_Username\\Downloads\\" + filename;
    file_path = path;
    BufferedReader reader = null;
    String line = "";
    String csvSplitBy = ",";
    int count = 0;
    String fullName, U_ID;
    int dnc_count = 0;

    User userArray[] = new User[1000];
    User[] DNC_List = new User[1000];
    System.out.println("Starting csv reader");

    try {
        reader = new BufferedReader(new FileReader(path));
        while ((line = reader.readLine()) != null) {
            String[] s = line.split(csvSplitBy);

            fullName = s[13] + " " + s[15];
            U_ID = s[44];
            userArray[count] = new User(s[1], s[2], s[0], fullName, U_ID);
            userArray[count].setDisposition(s[2]);
            userArray[count].setNumber(s[1]);
            userArray[count].setName(fullName);
            userArray[count].setID(U_ID);
            if(userArray[count].getDisposition() == "DNC" || userArray[count].getDisposition() == "CS"){
                DNC_List[dnc_count].setKey(String.valueOf(dnc_count));
                DNC_List[dnc_count].setDisposition("DNC");
                DNC_List[dnc_count].setName(userArray[dnc_count].getName());
                DNC_List[dnc_count].setID(userArray[dnc_count].getID());
                dnc_count++;
            }
            count++;
            User user = new User(s[1], s[2], s[0], fullName, U_ID);
            user.setDisposition(s[2]);
            user.setNumber(s[1]);
            user.setName(fullName);
            user.setID(U_ID);

        }
    } catch (Exception e) {
        e.printStackTrace();
    }

    // Prints out the array index, name, disposition, and phone_number
    System.out.println("\n\nUser array: \n");
    for (int i = 0; i < userArray.length; i++) {
        if (userArray[i] != null) {
            System.out.println(i + ": " + userArray[i].getName() + "\t | Dispo = " + userArray[i].getDisposition()
                    + "\t | Phone = " + userArray[i].getNumber());
        }
    }
    
    System.out.println("\nDNC_COUNT = " + dnc_count);
    for (int i = 0; i < dnc_count; i++) {
        System.out.println(DNC_List[i] + "\n");
    }
}
publicstaticvoidmycsvreader(字符串文件名){
String path=“C:\\Users\\My\u Username\\Downloads\\”+文件名;
文件路径=路径;
BufferedReader reader=null;
字符串行=”;
字符串csvSplitBy=“,”;
整数计数=0;
字符串全名,U_ID;
int dnc_计数=0;
用户userArray[]=新用户[1000];
用户[]DNC_列表=新用户[1000];
System.out.println(“启动csv读取器”);
试一试{
reader=newbufferedreader(newfilereader(path));
而((line=reader.readLine())!=null){
String[]s=line.split(csvSplitBy);
全名=s[13]+“”+s[15];
U_ID=s[44];
userArray[count]=新用户(s[1],s[2],s[0],全名,U\U ID);
userArray[count].setDisposition(s[2]);
userArray[count].setNumber(s[1]);
userArray[count].setName(全名);
userArray[count].setID(U_ID);
if(userArray[count].getDisposition()=“DNC”| | userArray[count].getDisposition()=“CS”){
DNC_列表[DNC_计数].setKey(String.valueOf(DNC_计数));
DNC_列表[DNC_计数].setDisposition(“DNC”);
DNC_列表[DNC_计数].setName(userArray[DNC_计数].getName();
DNC_列表[DNC_计数].setID(userArray[DNC_计数].getID();
dnc_计数++;
}
计数++;
用户用户=新用户(s[1],s[2],s[0],全名,U\U ID);
user.setDisposition(s[2]);
user.setNumber(s[1]);
user.setName(全名);
user.setID(U_ID);
}
}捕获(例外e){
e、 printStackTrace();
}
//打印出数组索引、名称、配置和电话号码
System.out.println(“\n\n用户数组:\n”);
for(int i=0;i
尝试使用
equals()
方法,而不是
=

public class Main {
  public static void main(String[] args) {
    String a = "DNC";
    String b = new String("DNC");
    System.out.println(a == b);
    System.out.println(a.equals(b));
  }
}
输出:

false
true

无法使用“==”运算符比较字符串对象的值,应使用
equals()
方法

将比较更改为使用
String
class的equals方法

使用

而不是

userArray[count].getDisposition() == "DNC" 

使用
equals
来比较字符串,而不是
=
“DNC”.equals(userArray[count].getDisposition())
非常感谢。这解决了我的问题,不客气!你的投票权很重要@普拉布,这样的问题是一个很容易解决的问题,通常值得一提。而且这个问题很可能会在复制后立即关闭,然后被删除。@AlexRudenko如果该问题因复制而关闭,这会影响我在stackoverflow上的个人资料吗?@AnthonyHorner,如果该问题关闭,它不会影响你的声誉积分,只是不允许新答案。只有当一个问题被删除时,所有相关的点(正面或负面)都会被丢弃,但是,删除“重复”问题的几率非常高。谢谢!这解决了我的问题太好了!!请向上投票并单击绿色大复选框接受答案。:)享受@Tushar,这样的问题是一个很容易解决的问题,通常值得一提。而这个问题很可能会在复制后很快被解决,然后被删除。
userArray[count].getDisposition() == "DNC"