chr*_*sen 4 java arrays evaluation contains arraylist
我有一个contains()方法的问题,即使ArrayList包含给定的方法返回false Object.我的代码如下:
String [] transaction = dbConnection.getPendingTransaction(username);
if (!onlineConnection.getSentTransactionRequests().contains(transaction)) {
onlineConnection.getSentTransactionRequests().add(transaction);
String packet = "RTR" + "_" + transaction[0] + "_" + transaction[2] +
"_" + transaction[3] + "_" + transaction[4];
onlineConnection.send(packet);
}
Run Code Online (Sandbox Code Playgroud)
我Thread.sleep()在迭代之间尝试过,所以ArrayList没有成功就没有加载.
对于这个问题,数组hashCode()和equals()数组有点破碎(这是一个长期不同的讨论原因).
可能的解决方法是使用ArrayList<ArrayList<String>>而不是ArrayList<String[]>,equals()方法ArrayList将按照您的预期.
例如:
ArrayList<String> l1 = new ArrayList<>();
ArrayList<String> l2 = new ArrayList<>();
l1.add("asdf");
l2.add("asdf");
ArrayList<ArrayList<String>> coll = new ArrayList<>();
coll.add(l1);
System.out.println(coll.contains(l2));
Run Code Online (Sandbox Code Playgroud)
将true如预期的那样屈服