Java system.out不会打印所有出现的内容

时间:2014-10-06 14:26:14

标签: java android xml

我目前正在解析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.
}

循环的输出变化。见下图。

sysout

结果可能是第一次执行4145次,第二次执行4198次。

由于String []持有5400项,因此此输出不应该是5400行吗?为什么不呢?

感谢任何解释。

马库斯

2 个答案:

答案 0 :(得分:3)

System.out转到logcat,logcat只是容量有限的缓冲区。超出容量时,将丢弃较旧的条目。缓冲区中System.out消息的比例取决于系统中的其他logcat活动。

请参阅What is the size limit for Logcat and how to change its capacity?

答案 1 :(得分:0)

如果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());
    }