Java 如何解析对象数组并将特定属性的元素保存到不同的数组?
我有一个调用记录数组,我想将调用配置为“DNC”的调用记录存储在另一个数组中。该函数打开一个csv文件,将整个文件读入一个对象数组并设置属性。原始数组包含680个对象记录。在my object setters后面有一个if语句,它表示if userArray[count].getDisposition==“DNC”,然后将此记录添加到我的新数组DNC_列表[DNC_count]中,并递增DNC_count++ dnc_计数初始化为0,在进程结束时,仍然为0。我的原始数组中有4条记录的属性为“DNC”。有人能告诉我我的代码有什么问题吗?为什么它不能识别什么时候是DNCJava 如何解析对象数组并将特定属性的元素保存到不同的数组?,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
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"