如果我们试图找到一个arraylist的大小(这不是常规的arraylist,它是一个自定义的arraylist,下面的重要方法),而无法访问.size()方法,我们将如何去做呢? / p>
arraylist类有一个.hasNext()和.next()方法
.hasNext()方法告诉列表中是否还有其他元素
.next()方法移动到列表中的下一个元素
如果它是一个linkList,我只是从头开始,在循环中使用.hasNext()和.next()方法来计算大小。但是在arraylist中没有头脑,我认为这是我的主要问题。
我想出了这个,但我认为没错。
public int getSize(SomeArrayList<String> list){
int size=0;
for(int i=0;list.get(i).hasNext();i++){
size++;}
return size;
答案 0 :(得分:3)
list.toArray().length
会做到这一点。
答案 1 :(得分:1)
您可以尝试以下代码:
public int getSize(ArrayList<String> list) {
int i = 0;
for(String s : list) {
i++;
}
return i;
}
答案 2 :(得分:0)
尝试使用此代码:
int size = 0;
Iterator<String> it =list.iterator();
while (it.hasNext()){
it.next();
size++;
}
return size;
答案 3 :(得分:0)
也许是这样的?
int size = 0;
try{
while(true){
list.get(size);
size++;
}
} catch(IndexOutOfBoundException e){
}
如果您将超出范围,将抛出异常,您将获得没有任何.size()。length
的大小答案 4 :(得分:0)
在你的代码中list.get(i).hasNext()
闻起来。您没有提到是否存在get(int index)
方法,但如果我们假定存在,则它应该返回一个没有hasNext()
方法的String对象。你的循环可能如下所示:
while (list.hasNext()){
size++;
list.next();
}
我先做一个空检查,但我不清楚你怎么能确定列表在开头不是空的。
你的数据结构对我来说很奇怪,因为它看起来更像是迭代器而不是真正的列表。