public static void main(String[] args)
{

    JSONParser parser = new JSONParser();

    try
    {
        String filePath = "C:\\\\book_data.json";
        FileReader reader = new FileReader(filePath);

        JSONParser jsonParser = new JSONParser();
        JSONObject jsonObject = (JSONObject)jsonParser.parse(reader);
        JSONArray books = (JSONArray)jsonObject.get("books");
        JSONArray authors = (JSONArray)jsonObject.get("authors");

        TwoGen<String, Integer>[] authorOfTheBookAvailable = new TwoGen[27000];
        List<String> authorOfTheBookNotAvailable = new ArrayList();
        int i = 0, j = 0, bookCount = 0;
        for (Iterator booksIterator = books.iterator(); booksIterator.hasNext();)
        {

            JSONObject booksObj = (JSONObject)booksIterator.next();

            for (Iterator authorIterator = authors.iterator(); authorIterator.hasNext();)
            {

                JSONObject authorObj = (JSONObject)authorIterator.next();

                if (booksObj.get("author").equals(authorObj.get("id")))
                {

                    authorOfTheBookAvailable[i] = new TwoGen<String, Integer>(booksObj.get("author").toString(),
                            bookCount++);

                }
                else
                {
                    if (i == 0)
                    {
                        authorOfTheBookNotAvailable.add(booksObj.get("author").toString());
                    }
                    else
                    {
                        for (String s : authorOfTheBookNotAvailable)
                        {
                            if (!s.equals(booksObj.get("author")))
                            {
                                authorOfTheBookNotAvailable.add(booksObj.get("author").toString());

                            }

                        }

                    }

                }
                j++;

            }
            i++;
        }

    }
    catch (FileNotFoundException e)
    {
        e.printStackTrace();
    }
    catch (IOException e)
    {
        e.printStackTrace();
    }
    catch (ParseException e)
    {
        e.printStackTrace();
    }

}

verdiği hata :

Exception in thread "main" java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.checkForComodification(Unknown Source)
at java.util.ArrayList$Itr.next(Unknown Source)
at com.alicankustemur.jsonchallenge.application.Application.main(Application.java:137)

aşağıda ki kodun koşturulduğun da yapılması beklenen iş , diziye daha önce kaydedilmiş bir veriyi tekrar kaydetmemek.

for (String s : authorOfTheBookNotAvailable)
                        {

                            if (!s.equals(booksObj.get("author")))
                            {
                                authorOfTheBookNotAvailable.add(booksObj.get("author").toString());

                            }

                        }

soruldu: 13 Kas '15, 01:00

alicankustemur's gravatar image

alicankustemur
71348
cevap kabul oranı: 20%


authorOfTheBookNotAvailable listesini for döngüsünde degistiriyorsunuz, bu durumda iterator degisiklige ugramis oluyor ve döngünün anlami kalmiyor.

ArrayList.Itr sinifina bakarsaniz,

final void checkForComodification() {
   if (modCount != expectedModCount)
         throw new ConcurrentModificationException();
}

Modcount hakkinda bilgiyi burada bulabilirsiniz:

https://docs.oracle.com/javase/7/docs/api/java/util/AbstractList.html#modCount
permanent link

cevaplandı: 13 Kas '15, 03:32

%C3%B6zcanacar's gravatar image

özcanacar ♦♦
17.2k59183183
cevap kabul oranı: 52%

çok teşekkür ederim Özcan hocam , bir işi denerken döngünün işe yaramaz hale geldiğinin farkına varamadım :)

(14 Kas '15, 03:23) alicankustemur alicankustemur's gravatar image
Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×39
×10
×2

Soruldu: 13 Kas '15, 01:00

Görüntüleme: 372 kez

Son güncelleme: 14 Kas '15, 03:23

powered by BitNami OSQA