import java.io.File;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class Main {
public static void main(String[] args) throws Exception{
List<Car> carsList = new ArrayList<Car>();
Set<Car> carsset = new HashSet<Car>();
File fXmlFile = new File("cars.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(fXmlFile);
doc.getDocumentElement().normalize();
NodeList nList = doc.getElementsByTagName("cars");
Car tempCar = null;
for (int temp = 0; temp < nList.getLength(); temp++) {
Node nNode = nList.item(temp);
if (nNode.getNodeType() == Node.ELEMENT_NODE) {
tempCar = new Car();
Element eElement = (Element) nNode;
tempCar.setModel(eElement.getElementsByTagName("model").item(0)
.getTextContent());
tempCar.setVersion(eElement.getElementsByTagName("version").item(0)
.getTextContent());
carsList.add(tempCar);
carsset.add(tempCar);
}
}
for (Car cs : carsset) {
int count = 0;
for (Car cl : carsList) {
if (cs.equals(cl)) {
count = count + 1;
}
}
System.out.println(cs + "\t" + count);
}
}
}
class Car {
private String model;
private String version;
public String getModel() {
return model;
}
public void setModel(String model) {
this.model = model;
}
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
@Override
public boolean equals(Object obj) {
if (this.model.equals(((Car) obj).getModel())
&& this.version.equals(((Car) obj).getVersion())) {
return true;
}
return false;
}
@Override
public int hashCode() {
return this.model.length() + this.version.length();
}
@Override
public String toString() {
return this.model + "\t " + this.version;
}
}
cars.xml
<?xml version="1.0" encoding="UTF-8"?>
<root>//ww w.ja v a 2 s .c o m
<cars>
<model>maruthi</model>
<version>alto</version>
</cars>
<cars>
<model>maruthi</model>
<version>verna</version>
</cars>
<cars>
<model>maruthi</model>
<version>verna</version>
</cars>
<cars>
<model>maruthi</model>
<version>alto</version>
</cars>
<cars>
<model>maruthi</model>
<version>alto</version>
</cars>
<cars>
<model>honda</model>
<version>city</version>
</cars>
<cars>
<model>Audi</model>
<version>Q7</version>
</cars>
<cars>
<model>honda</model>
<version>city</version>
</cars>
</root>