簡體   English   中英

Java system.out不會打印所有事件

[英]Java system.out not printing all occurances

我目前正在解析XML文檔,並將XML數據存儲在String []中。 這是我的工作:

db = dbf.newDocumentBuilder();
Document dom = db.parse(in);
Element docElem = dom.getDocumentElement();
NodeList valuesList= docElem.getElementsByTagName("values");

Element value = (Element) valuesList.item(0);

//Split on every white space
String[] myValues = value.getFirstChild().getNodeValue().split("\\s+");

System.out.println(myValues.length);
//Output: 5400 

for(String val : myValues){
    System.out.println("Value: " + val);
    //This prints out random amount of lines in the console, see figure.
}

循環的輸出變化。 參見下圖。

系統輸出

結果可能是第一次執行4145,第二次執行4198。

因為String []包含5400個項目,所以此輸出不應該是5400行嗎? 為什么不呢?

感謝您的任何解釋。

馬庫斯

System.out進入logcat,而logcat只是容量有限的緩沖區。 超過容量時,將丟棄較舊的條目。 您的System.out消息在緩沖區中的比例取決於系統中其他logcat活動。

請參閱Logcat的大小限制以及如何更改其容量?

如果Logcat大小限制不是您的問題,請嘗試以下方法-

    //Split on every white space
    String[] myValues = value.getFirstChild().getNodeValue().split("\\s+");

    System.out.println(myValues.length);
    //Output: 5400 

    List<String> stringList = Arrays.asList(myValues);

    List<String> list = Collections.synchronizedList(stringList);

    synchronized(list) 
    {
       Iterator<String> iterator = list.iterator(); 

       while (iterator.hasNext())
          System.out.println(iterator.next());
    }

暫無
暫無

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

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