簡體   English   中英

如何解決java.util.NoSuchElementException

[英]how to resolve java.util.NoSuchElementException

我首先得到以下代碼

以下錯誤消息

java.util.ConcurrentModificationException
java.util.ConcurrentModificationException
        at java.util.HashMap$HashIterator.nextEntry(HashMap.java:894)
        at java.util.HashMap$KeyIterator.next(HashMap.java:928)
        at ca.on.oicr.pinery.lims.gsle.GsleClient.getOrders(GsleClient.java:720)

其中第720行是第二個for循環。

我得到的答案是我在一個循環中添加訂單,這個循環遍及訂單元素,這就是導致異常的原因。 不要修改在循環內循環的集合。 同樣的樣品。

所以我重新做了這個方法,但我得到以下錯誤信息:

java.util.NoSuchElementException
java.util.NoSuchElementException
    at java.util.ArrayList$Itr.next(ArrayList.java:794)
    at ca.on.oicr.pinery.lims.gsle.GsleClient.getOrders(GsleClient.java:730)

其中第730行是以下代碼中的Set samples = sampleOrderMap.get(it.next()。getId())

我將如何修復此錯誤消息,並且此新方法將具有與原始方法相同的功能,但是我覺得擁有所有這些循環和條件語句將導致它無法正常工作。

我假設it是一個Iterator (我這樣說是因為你沒有發布重現這個的所有源代碼,你將來應該這樣做。)

因此,每次調用it.next()您都在推進迭代器。 it.next()中調用it.next()三次。 因此,如果Iterator只剩下一個項目,則對it.hasNext()的初始調用將返回true,但是在用完項目之前,您只能再次調用it.next()

while (it.hasNext()) {
    OrderSample nextSample = it.next();
    // blah blah blah
    // use nextSample instead of it.next() in each subsequence instance.
}

在以下代碼中:

 while (it.hasNext()) {
 if (sampleOrderMap.containsKey((it.next().getId()))) { // calling it.next()
    if (it.next().getId() != null) { // again calling it.next() ?
       Set<OrderSample> samples = sampleOrderMap.get(it.next().getId()); //again calling 
       for (OrderSample orderSample : samples) {
          Set<Attribute> attributes = attributeOrderMap.get(orderSample.getId());

 ////............ your code

你在每次調用iterator.next() it.next()時連續調用it.next()iterator.next()器通過返回一個元素前進。 雖然我不確定it.next()返回了什么對象,但您可以將它分配給集合類型的Object並在while循環中使用它,如下所示:

while (it.hasNext()) {
   Order order = (Order)it.next();  // if Order is your list's type
     if (sampleOrderMap.containsKey((order.getId()))) {
        if (order.getId() != null) {
           Set<OrderSample> samples = sampleOrderMap.get(order.getId());
           for (OrderSample orderSample : samples) {
              Set<Attribute> attributes = attributeOrderMap.get(orderSample.getId());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM