我无法弄清楚如何比较ArrayList的每个单独值。我这样做是通过在ArrayList之前分配一个空的ArrayList来填充,但由于某种原因它在我运行该方法的同时填充了两个。你们有谁知道为什么?注意:此代码没有进行比较,但我无法在第一时间填写它们以尝试进行比较。
List<Long> StationsArrayListG7 = new ArrayList<>();
List<Long> StationsArrayListG7a = new ArrayList<>();
public void GetApplicationSpecificUserStats(MBeanServerConnection serverConnectionName) {
StationsArrayListG7a = StationsArrayListG7;
String attrName = "current";
for(String stringName : gSelectedApplicationsFromFile) {
try {
String connectsName = "WowzaMediaServerPro:vHosts=VHosts,vHostName=_defaultVHost_,"
+ "applications=Applications,applicationName=" + stringName + ",name=Connections";
ObjectName connectsObjName = new ObjectName(connectsName);
try {
Long valueObj = (Long)serverConnectionName.getAttribute(connectsObjName, attrName);
valueX = valueObj;
StationsArrayListG7.add(valueX);
} catch (MBeanException ex) {
Logger.getLogger(GUI.class.getName()).log(Level.SEVERE, null, ex);
} catch (AttributeNotFoundException ex) {
Logger.getLogger(GUI.class.getName()).log(Level.SEVERE, null, ex);
} catch (InstanceNotFoundException ex) {
Logger.getLogger(GUI.class.getName()).log(Level.SEVERE, null, ex);
} catch (ReflectionException ex) {
Logger.getLogger(GUI.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(GUI.class.getName()).log(Level.SEVERE, null, ex);
System.out.println("IOException Error has occured!");
}
}
catch (MalformedObjectNameException ex) {
Logger.getLogger(GUI.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
当我使用单个变量而不是数组时,它可以正常工作。如果我正确地分配数组StationsArrayListG7a = StationsArrayListG7;我无法弄明白。我试过复制和类似的东西,但它一直给我null。
提前致谢。
更新:更换StationsArrayListG7a = StationsArrayListG7;与StationsArrayListG7a.addAll(StationsArrayListG7);似乎有所帮助。我不是100%肯定,但是当我写这篇文章时,我需要做一些测试。如果您还有任何疑问,请告诉我:D
UPDATE2:UPDATE中提到的方法有效。我用来比较的代码是:
for (int i = 0; i < Array1.size(); i++) {
if (Array1.get(i) >= Array2.get(i) + difDrop) {
}
}
答案 0 :(得分:2)
方法中的第一个非空行分配StationsArrayListG7a = StationsArrayListG7;
,这意味着两个变量现在引用相同的ArrayList
对象。
答案 1 :(得分:1)
您正在创建两个不同的ArrayList
对象:
List<Long> StationsArrayListG7 = new ArrayList<>();
List<Long> StationsArrayListG7a = new ArrayList<>();
然后你扔掉一个并将一个分配给另一个,这意味着他们现在引用同一个对象......:
StationsArrayListG7a = StationsArrayListG7;
如果您要将一个ArrayList
的内容复制到另一个,则有一个构造函数:
List<Long> StationsArrayListG7 = new ArrayList<>();
// put stuff in StationsArrayListG7
// ...
List<Long> StationsArrayListG7a = new ArrayList<>( StationsArrayListG7 );
干杯,