Skip to main content

Iterator allows to remove elements during iteration

With a for each loop you can iterate easily through a collection but you cannot remove elements during iteration.
List<String> list = new ArrayList<String>();
list.add("Max");
list.add("bob");
list.add("Alex");

// for each loop:
// execution this loop ends with a
// java.util.ConcurrentModificationException
for (String element : list) {
   list.remove(element);
}
A java.util.Iterator is a suitable solution for the above situation, because it allows you to remove elements from a collection during iteration.
Iterator<String> iterator = list.iterator(); 

while (iterator.hasNext()) {
   iterator.next()); 
   iterator.remove();
}
Iterator interface has three methods:
boolean hasNext()
E next()
void remove()
and allows for iteration in a one direction. If you want to iterate through a list in both directions you should use a ListIterator (implements Iterator) which has additional methods:
boolean hasPrevious() 
E previous()
int previousIndex() 
int nextIndex() 

Comments

Popular posts from this blog

Convert Source to String

import java.io.BufferedReader; import java.io.IOException; import java.io.Reader; import java.io.StringReader; import javax.xml.transform.Source; import javax.xml.transform.sax.SAXSource; import org.xml.sax.InputSource; public class DataSourceTest { public static void main(String[] args) throws IOException { // created Source InputSource inputSource = new InputSource(new StringReader( " \n \n \n ")); Source source = new SAXSource(inputSource); // read Source SAXSource saxSource = (SAXSource) source; InputSource inputSourceReader = saxSource.getInputSource(); Reader reader = inputSourceReader.getCharacterStream(); BufferedReader buffereRreader = new BufferedReader(reader); String read = null; while ((read = buffereRreader.readLine()) != null) { System.out.println(read); } } }

scala Hello World

The code below prints Hello World! Hello.scala file (a name of file doesn't matter) object HelloWorld { def main(args: Array[String]) { println("Hello World!") } } Key word object is used to create a singleton object. To run this script use scala interpretor (check scala command line tools ).

JAXB marshall and unmarshall

write xsd schema file(s) use xjc tool to compile xsd schema file(s) into java classes create a java object marshall the object into a file unmarshall the object from a file 1. drink.xsd schema file <xs:element name="drink"> <xs:complexType> <xs:sequence> <xs:element name="name" type="xs:string" /> <xs:element name="alcohol" type="AlcoholEnum" minOccurs="0" maxOccurs="10" /> <xs:element name="ice" type="xs:boolean" /> </xs:sequence> </xs:complexType> </xs:element> <xs:simpleType name="AlcoholEnum"> <xs:restriction base="xs:string"> <xs:enumeration value="vodka" /> <xs:enumeration value="rum" /> <xs:enumeration value="whiskey" /> <xs:enume