eri*_*cso 7 java integer arraylist
我存储的Integer对象表示我想要跟踪的对象的索引.稍后在我的代码中,我想检查特定对象的索引是否对应于我之前存储的那些整数之一.我这样做是通过创建一个ArrayList并从for循环的索引创建一个新的Integer:
ArrayList<Integer> courseselectItems = new ArrayList();
//Find the course elements that are within a courseselect element and add their indicies to the ArrayList
for(int i=0; i<numberElementsInNodeList; i++) {
if (nodeList.item(i).getParentNode().getNodeName().equals("courseselect")) {
courseselectItems.add(new Integer(i));
}
}
Run Code Online (Sandbox Code Playgroud)
然后,我想稍后检查ArrayList是否包含特定索引:
//Cycle through the namedNodeMap array to find each of the course codes
for(int i=0; i<numberElementsInNodeList; i++) {
if(!courseselectItems.contains(new Integer(i))) {
//Do Stuff
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,当我使用new Integer(i)will 创建一个新的Integer时,我可以使用比较整数ArrayList.contains()吗?也就是说,当我使用创建新对象时new Integer(i),如果用于创建它们的int值相同,那么它是否与先前创建的Integer对象相同?
我希望我没有把它弄得太清楚.谢谢您的帮助!
cle*_*tus 18
是的,你可以使用它List.contains()作为使用equals()和Integer支持,当与其他Integers 比较.
此外,由于自动装箱你可以简单地写:
List<Integer> list = new ArrayList<Integer>();
...
if (list.contains(37)) { // auto-boxed to Integer
...
}
Run Code Online (Sandbox Code Playgroud)
值得一提的是:
List list = new ArrayList();
list.add(new Integer(37));
if (list.contains(new Long(37)) {
...
}
Run Code Online (Sandbox Code Playgroud)
将永远返回,false因为一个Integer不是一个Long.这会使某些人在某些时候绊倒.
最后,尝试使您的变量作为接口类型的Java集合而不是具体类型,这样:
List<Integer> courseselectItems = new ArrayList();
Run Code Online (Sandbox Code Playgroud)
不
ArrayList<Integer> courseselectItems = new ArrayList();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19523 次 |
| 最近记录: |