How to get synchronized version of ArrayList object?

By default ArrayList object is non synchronized but we can get synchronized version of ArrayList by using collection class’s synchronizedList() method.

Non-synchronized 

ArrayList nonSyncronizedList = new ArrayList();

Synchronized

List syncronizeList = new Collections.synchronizedList(l1);

Similarly we can get synchronized version of set, map objects by using the following methods of collection class.

Public static Set synchronizedSet(Set s);

Public static Map synchronizedMap(Map m);

315 total views, 1 views today

Stack Class

  1. It is the child interface of vector.
  2. It is specially designed class for last in first out (LIFO).

Methods in stack

  1. Object push(Object o)

For inserting an object to the stack.

  • Object pop()

To remove and return top of the object.

  • Int peak();

To return the top of the stack without removal of object.

  • Int search(Object o)

If the specified object is available it returns its offset from the top of the stack.

If the specified object is not available it returns -1.

Examples

package List;

import java.util.Stack;

public class StackDemo {
	public static void main(String[] args) {
		Stack s = new Stack();
		s.push("A");
		s.push("B");
		s.push("C");
		System.out.println(s); // [A, B, C]
		System.out.println(s.search("A")); // 3
		System.out.println(s.search("Z")); // -1
	}

}

247 total views, 1 views today

Vector Class

  1. The underlying data structure for the vector is resizable array or grow able array.
  2. Duplicates objects are allowed.
  3. Insertion order is preserved.
  4. Null insertion is possible.
  5. Heterogeneous objects are allowed.
  6. Vector class implemented Serializable, Cloneable and RandomAccess.
  7. Most of the methods present in vector are synchronized. Hence vector object is thread safe.
  8. Best choice if frequent operation is retrieved.

Methods of vector class

For adding objects:-

add(Object o) [from Collection-List l]
add() [from List]
addElement(Object o) [from Vector]

For removing objects:-

remove(Object o) [from Collection]
removeElement(Object o) [from Vector]
remove(int index) [from List]
removeElementAt(int index) [from Vector]
clear() [from Collection]
removeAllElements() [from Vector]
=

For accessing elements:-

Object get(int index) [from Collection]
Object elementAt(int index) [from Vector]
Object firstElement() [from Vector]
Object lastElement() [from Vector]

Other Methods:-

int Size();
int Capacity();
Enumeration elements ();

Constructors of Vector class

Vector v = new Vector();

Creates an empty vector object with default initial capacity 10, once vector reaches its maximum capacity a new object will be created with new capacity.

             New Capacity = 2*Current Capacity

Vector v = new Vector(int initial capacity);

Creates an empty vector object with specified initial capacity.

Vector v = new Vector(int initial capacity, int incremental capacity)
Vector v = new Vector(Collection c);

Creates an equivalent vector object for the given collection.

Example

package List;

import java.util.Vector;

public class VectorDemo {
	public static void main(String[] args) {
		Vector v = new Vector();
		System.out.println(v.capacity()); // 10
		for (int i = 1; i <= 10; i++) {
			v.addElement(i);
		}
		System.out.println(v.capacity()); // 10
		v.addElement("A");
		System.out.println(v.capacity()); // 20
		System.out.println(v); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, A]

	}

}

219 total views, no views today

LinkedList

  1. The underlying data structure is double linked list.
  2. Insertion order is preserved.
  3. Duplicates are allowed.
  4. Heterogeneous objects are allowed.
  5. Null insertion is possible.
  6. LinkedList implements Serializable and Cloneable interfaces but not RandomAccess interface.
  7. LinkedList is best choice if our frequent operation is insertion and deletion in the middle.
  8. LinkedList is worst choice if our frequent operation is retrieval operation.
  9. Usually we can use LinkedList to implement stacks & queue to provide support for this requirement LinkedList class defines following specific methods.
  10. In retrieval, 1st element takes 1sec to find, 2nd element takes 2sec to find. Hence nth element takes n sec. So time complexity is O(n)

A double linkedList whose node contains three fields, 1st field either points to the start or address of the previous node, 2nd field contain the data or 3rd field either contain the next node address or points to the end (null).

  LinkedList node

Previous node address or
address point
Data Next node address
or null

LinkedList list points to the 1st element and it has the address of the second node where second node will contain the address of previous node, data and address of next node.

Methods of LinkedList

void addFirst();

void addLast();

Object getFirst();

Object getLast();

Object removeFirst();

Object removeLast();

Constructors of LinkedList

LinkedList list = new LinkedList();

Creates an empty LinkedList object.

LinkedList list= new LinkedList(Collection c);

Creates an equivalent linked list object for given collection.

Examples

package List;

import java.util.LinkedList;

public class LinkedListDemo {

	public static void main(String[] args) {
		LinkedList l1 = new LinkedList();
		l1.add("durga");
		l1.add(30);
		l1.add(null);
		l1.add("durga");
		System.out.println(l1); // [durga, 30, null, durga]
		l1.set(0, "software");
		System.out.println(l1); // [software, 30, null, durga]
		l1.add(0, "venky");
		l1.addFirst("ccc");
		System.out.println(l1); // [ccc, venky, software, 30, null, durga]
	}

}

235 total views, 1 views today

ArrayList

  1. The underlying data structure is resizable array and grow able array.
  2. Duplicates are allowed.
  3. Insertion order is preserved.
  4. Heterogeneous objects are allowed [except TreeSet and TreeMap]
  5. Null insertion is possible.

ArrayList Constructors

  • ArrayList list = new ArrayList();

Creates an empty array list object with default initial capacity. Once array list reaches its maximum capacity a new array list will be created with new capacity.

New capacity = (Current Capacity*3/2)+1 which is almost 75%

            With the above mentioned constructor Arraylist with default size i.e. 10 will be created and once it reaches its maximum capacity then it grows dynamically with new capacity i.e. 15.

  • ArrayList list = new ArrayList(int initial capacity);

Creates an empty array list object with the given initial capacity. Once array list reaches its maximum capacity a new array list will be created with new capacity.

  • ArrayList list = new ArrayList(Collection c)

Creates an array list object for the given collection.

Example

package List;

import java.util.ArrayList;

public class ArrayListDemo {
	public static void main(String[] args) {
		ArrayList l = new ArrayList();
		l.add("A");
		l.add("10");
		l.add("A");
		l.add("null");
		System.out.println(l); // [A, 10, A, null]
		l.remove(2);
		System.out.println(l); // [A, 10, null]
		l.add(2, "M");
		l.add("N");
		System.out.println(l); // [A, 10, M, null, N]

	}

}

6. Usually we can use collection to hold and transfer objects over the network and to support this requirement every collection already implements Serializable and Cloneable.

7. ArrayList and vector classes implements RandomAccess interface so that we can access any random element with the same speed.

package List;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.RandomAccess;

public class ArrayListSerialClone {

	public static void main(String[] args) {
		ArrayList l1 = new ArrayList();
		LinkedList l2 = new LinkedList();
		System.out.println(l1 instanceof Serializable); // true
		System.out.println(l1 instanceof Cloneable); // true

		System.out.println(l2 instanceof Serializable); // true
		System.out.println(l2 instanceof Cloneable); // true

		System.out.println(l1 instanceof RandomAccess); // true
		System.out.println(l2 instanceof RandomAccess); // false

	}
}

8. Hence if our frequent operation is retrieval operation then ArrayList is the best choice.

9. ArrayList is the worst choice if our frequent operation is insertion or deletion in the middle(Because several shift operations will be required).

236 total views, 2 views today

List interface

  1. It is the child interface of collection.
  2. Duplicates are allowed
  3. If we want to represent a group of individual objects as a single entity where insertion order is preserved then we should go for list.
  4. We can differentiate duplicates by using index.
  5. We can preserve insertion order by using index, hence index play very important role in list interface.

List of 10 elements where index starts with 0 to 9. Index goes from 0 to 9. 0 & 9th position contains the same element.

Methods of List:-

void add(int index, Object o)

boolean addAll(int index, Collection c)

object get(int index)

object remove(int index)

object set(int index, Object new)

int indexOf(Object o)

int lastIndexOf(Object o)

ListIterator listIterator();

317 total views, no views today

First Selenium program using Maven+Java


This is basic example to use Webdriver, Maven with Java.


We need Tools:


1.Eclipse – IDE to Build our applications

Download and install Eclipse. I choose Eclipse IDE 
you can choose IDE of you choice.



2.Maven – We need maven to get all our dependencies automatically, which also allows users to reuse same jars across multiple projects

Download and install maven.
Eclipse does not have integrated Maven support out of the box. To add the support, I am going to use Maven Integration (m2e).


Steps to create program


Step 1:  First create a new Maven project. 

In Eclipse: File -> New -> Other  -> Maven -> Maven project

  • Click: Next, Next, Next
  • Type in field Group Id: com.demo.yourCompanyName
  • Type in field Artifact Id: yourProjectName
  • Click: Finish


Step 2 Edit pom.xml

Eclipse should detect the pom.xml changes automatically, build the project and download required dependencies.

After the build is finished, there should be selenium*.jar files under Maven Dependencies under the Project Explorer panel.

POM.XML

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.demo.yourCompanyName</groupId>
<artifactId>Demo</artifactId>
<version>0.0.1-SNAPSHOT</version>

<dependencies>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-server</artifactId>
<version>3.4.0</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>

<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>


Step 3:

Create a new test class
Right-click over package com.yourcompany.yourclientprojectname 

under src/test/java and select New -> Class

Type in ClassName: OpenFirefox

Java Code:

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
public class OpenFirefox {

public static void main(String[] args)

{

System.out.println("Start");

System.setProperty("webdriver.gecko.driver", "Path to gekco driver\geckodriver.exe");

WebDriver driver = new FirefoxDriver();

driver.get("https://www.google.co.in/");

System.out.println("End");
}
}


Step 4 :


Right click on class RunAs –>java application.

Your firefox browser will open with given URL “https://www.google.co.in/

137 total views, no views today