Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在带有ArrayList的方法中使用迭代器_Java - Fatal编程技术网

Java 在带有ArrayList的方法中使用迭代器

Java 在带有ArrayList的方法中使用迭代器,java,Java,有人能给我解释一下这个方法是什么意思吗 clientOutputStreams = new ArrayList(); public void tellEveryone(String message) { Iterator it = clientOutputStreams.iterator(); while(it.hasNext()) { try { PrintWriter writer = (PrintWriter) it.n

有人能给我解释一下这个方法是什么意思吗

 clientOutputStreams = new ArrayList();

 public void tellEveryone(String message) {
     Iterator it = clientOutputStreams.iterator();
     while(it.hasNext()) {
         try {
             PrintWriter writer = (PrintWriter) it.next();
             writer.println(message);
             writer.flush();
         } catch(Exception ex){ex.printStackTrace();}
     }//end while
 }//end method

任何帮助都将不胜感激。

它似乎正在实现一种模式,其中订户是输出流的目标

也就是说,您有一个输出流列表,每当有人调用
tellEveryone
方法时,消息将在其中发布。将输出流引用存储在列表中允许轻松添加“监听器”,在本例中,在不更改代码的情况下添加输出通道

这是您的代码:

clientOutputStreams = new ArrayList(); //Subscribers list
...
...
 public void tellEveryone(String message) {  //Publish your message writing it in each single outPutStream
     Iterator it = clientOutputStreams.iterator(); //Get an iterator to traverse the subscriber list
     while(it.hasNext()) { 
         try {
             PrintWriter writer = (PrintWriter) it.next();
             writer.println(message); //Print the message.
             writer.flush();
         } catch(Exception ex){ex.printStackTrace();} //Catch any posssible exception, (what happens if one stream is closed?)
     }//end while
 }//end method
例如,您可以使用日志,希望通过套接字连接发送消息,并将其存储在文件中。要执行该任务,只需将套接字的
PrintWriter
对象和文件的
PrintWriter
添加到
clientOutputStream
一次。
然后,无论何时记录一条消息,您只需调用
tellEveryone
,它将存储在文件中并发送到连接接收器。

此方法似乎将“clientOutputStreams”输出到“消息”,并将ASCII码转换为默认字符集。在我看来,迭代器看起来像一个poniter,它指向数组的元素。

请更具体一点,同时尽量缩进您的代码:)谢谢您的回答。非常感谢