Tuesday, 19 September 2017

How to use toList and joining methods of Collectors | Java 8 streams | Streams in Java 8


Click here to watch in Youtube :
https://www.youtube.com/watch?v=XBtsIW7_H_k&list=UUhwKlOVR041tngjerWxVccw

Product.java
public class Product
{
    private String name;
    private int price;

    public Product(String name, int price)
    {
        super();
        this.name = name;
        this.price = price;
    }

    public String getName()
    {
        return name;
    }

    public void setName(String name)
    {
        this.name = name;
    }

    public int getPrice()
    {
        return price;
    }

    public void setPrice(int price)
    {
        this.price = price;
    }

    @Override
    public String toString()
    {
        return "Product [name=" + name + ", price=" + price + "]";
    }

}
StreamDemo.java
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class StreamDemo
{
    public static void main(String[] args)
    {
        List<Product> productList = Arrays.asList(
                new Product("potatoes", 15),
                new Product("orange", 15), new Product("lemon", 20),
                new Product("bread", 20), new Product("sugar", 30));

        /*
         * Converting a stream to the Collection (Collection, List or
         * Set):
         */
        List<String> productNameList = productList.stream()
                .map(Product::getName).collect(Collectors.toList());

        System.out.println("productNameList = " + productNameList);

        /*
         * Reducing to String:
         * 
         * The joiner() method can have from one to three parameters
         * (delimiter, prefix, suffix). The handiest thing about using
         * joiner() – developer doesn’t need to check if the stream
         * reaches its end to apply the suffix and not to apply a
         * delimiter. Collector will take care of that.
         */

        String listToString = productList.stream()
                .map(Product::getName)
                .collect(Collectors.joining(", ", "[", "]"));

        System.out.println("listToString = " + listToString);

    }

}
Output
productNameList = [potatoes, orange, lemon, bread, sugar]
listToString = [potatoes, orange, lemon, bread, sugar]

Click the below link to download the code:
https://sites.google.com/site/ramj2eev1/home/javabasics/StreamDemo_Collectors_toList_joining.zip?attredirects=0&d=1

Github Link:
https://github.com/ramram43210/Java/tree/master/BasicJava/StreamDemo_Collectors_toList_joining

Bitbucket Link:
https://bitbucket.org/ramram43210/java/src/adf72ea7a150b1a34af5820c19f2232b522614b9/BasicJava/StreamDemo_Collectors_toList_joining/?at=master

See also:
  • All JavaEE Viedos Playlist
  • All JavaEE Viedos
  • All JAVA EE Links
  • Servlets Tutorial
  • All Design Patterns Links
  • JDBC Tutorial
  • Java Collection Framework Tutorial
  • JAVA Tutorial
  • Kids Tutorial
  • How to use range and reduce method of IntStream | Java 8 streams | Streams in Java 8


    Click here to watch in Youtube :
    https://www.youtube.com/watch?v=PizeqLw_5VY&list=UUhwKlOVR041tngjerWxVccw

    StreamDemo.java
    import java.util.OptionalInt;
    import java.util.stream.IntStream;
    
    public class StreamDemo
    {
        public static void main(String[] args)
        {
            /*
             * sum = 6 (1 + 2 + 3)
             */
            OptionalInt optionalInt = IntStream.range(1, 4).reduce((a, b) -> a + b);
            
            System.out.println(optionalInt.getAsInt());
            
            /*
             * sum = 16 (10 + 1 + 2 + 3)
             */
            int sum = IntStream.range(1, 4).reduce(10, (a, b) -> a + b);
            
            System.out.println(sum);
        }
    
    }
    
    Output
    6
    16
    
    
    Click the below link to download the code:
    https://sites.google.com/site/ramj2eev1/home/javabasics/StreamDemo_range_reduce.zip?attredirects=0&d=1

    Github Link:
    https://github.com/ramram43210/Java/tree/master/BasicJava/StreamDemo_range_reduce

    Bitbucket Link:
    https://bitbucket.org/ramram43210/java/src/adf72ea7a150b1a34af5820c19f2232b522614b9/BasicJava/StreamDemo_range_reduce/?at=master

    See also:
  • All JavaEE Viedos Playlist
  • All JavaEE Viedos
  • All JAVA EE Links
  • Servlets Tutorial
  • All Design Patterns Links
  • JDBC Tutorial
  • Java Collection Framework Tutorial
  • JAVA Tutorial
  • Kids Tutorial
  • Whether we can reuse the Stream or not | Java 8 streams | Streams in Java 8


    Click here to watch in Youtube :
    https://www.youtube.com/watch?v=6_6ytShUcJU&list=UUhwKlOVR041tngjerWxVccw

    StreamDemo.java
    import java.util.Optional;
    import java.util.stream.Stream;
    
    public class StreamDemo
    {
        public static void main(String[] args)
        {
    
            Stream<String> stream = Stream.of("a", "b", "c");               
    
            Optional<String> anyElement = stream.findAny();
    
            System.out.println("anyElement = " + anyElement);
    
            /*
             * Attempt to reuse the same reference after calling the
             * terminal operation will trigger the IllegalStateException.
             * 
             * As the IllegalStateException is a RuntimeException, a
             * compiler will not signalize about a problem. So, it is very
             * important to remember that Java 8 streams can’t be reused.
             * 
             * This kind of behavior is logical because streams were
             * designed to provide an ability to apply a finite sequence
             * of operations to the source of elements in a functional
             * style, but not to store elements.
             */
            Optional<String> firstElement = stream.findFirst();
            System.out.println("firstElement = " + firstElement);
        }
    
    }
    
    Output
    anyElement = Optional[a]
    Exception in thread "main" java.lang.IllegalStateException: 
    stream has already been operated upon or closed
        at java.util.stream.AbstractPipeline.evaluate(Unknown Source)
        at java.util.stream.ReferencePipeline.findFirst(Unknown Source)
        at StreamDemo.main(StreamDemo.java:28)
    
    
    Click the below link to download the code:
    https://sites.google.com/site/ramj2eev1/home/javabasics/StreamDemo_reuse_stream_exe.zip?attredirects=0&d=1

    Github Link:
    https://github.com/ramram43210/Java/tree/master/BasicJava/StreamDemo_reuse_stream_exe

    Bitbucket Link:
    https://bitbucket.org/ramram43210/java/src/adf72ea7a150b1a34af5820c19f2232b522614b9/BasicJava/StreamDemo_reuse_stream_exe/?at=master

    See also:
  • All JavaEE Viedos Playlist
  • All JavaEE Viedos
  • All JAVA EE Links
  • Servlets Tutorial
  • All Design Patterns Links
  • JDBC Tutorial
  • Java Collection Framework Tutorial
  • JAVA Tutorial
  • Kids Tutorial
  • Monday, 11 September 2017

    What are the different ways we can create the streams | Java 8 streams V2 | Streams in Java 8


    Click here to watch in Youtube :
    https://www.youtube.com/watch?v=W-5qKXOAUow&list=UUhwKlOVR041tngjerWxVccw

    Click the below Image to Enlarge
    What are the different ways we can create the streams | Java 8 streams V2 | Streams in Java 8

    What are the different ways we can create the streams | Java 8 streams V2 | Streams in Java 8
    What are the different ways we can create the streams | Java 8 streams V2 | Streams in Java 8
    What are the different ways we can create the streams | Java 8 streams V2 | Streams in Java 8
    What are the different ways we can create the streams | Java 8 streams V2 | Streams in Java 8
    What are the different ways we can create the streams | Java 8 streams V2 | Streams in Java 8
    What are the different ways we can create the streams | Java 8 streams V2 | Streams in Java 8
    What are the different ways we can create the streams | Java 8 streams V2 | Streams in Java 8
    What are the different ways we can create the streams | Java 8 streams V2 | Streams in Java 8

    See also:
  • All JavaEE Viedos Playlist
  • All JavaEE Viedos
  • All JAVA EE Links
  • Servlets Tutorial
  • All Design Patterns Links
  • JDBC Tutorial
  • Java Collection Framework Tutorial
  • JAVA Tutorial
  • Kids Tutorial
  • Kids: Men Fashion_V13

    Kids: Men Fashion_V12

    Wednesday, 6 September 2017

    How to use flatMapToInt method to convert Stream of intArray to IntStream | Streams in Java 8


    Click here to watch in Youtube : 
    https://www.youtube.com/watch?v=9e-W_Qmqjyo&list=UUhwKlOVR041tngjerWxVccw

    FlatMapDemo.java
    import java.util.Arrays;
    import java.util.stream.IntStream;
    import java.util.stream.Stream;
    
    public class FlatMapDemo
    {
        public static void main(String[] args)
        {
    
            int[][] intArray = {{1, 2, 3}, {4,5,6}};
    
            //1. Stream<int[]>
            Stream<int[]> arrayStream = Stream.of(intArray);
    
            //2. Stream<int[]> -> flatMap -> IntStream
            IntStream intStream = arrayStream.flatMapToInt(x -> Arrays.stream(x));
    
            intStream.forEach(x -> System.out.println(x));
        }
    
    }
    
    Output
    1
    2
    3
    4
    5
    6
    
    
    Click the below link to download the code:
    https://sites.google.com/site/ramj2eev1/home/javabasics/StreamDemo_flatmap_intarray.zip?attredirects=0&d=1

    Github Link:
    https://github.com/ramram43210/Java/tree/master/BasicJava/StreamDemo_flatmap_intarray

    Bitbucket Link:
    https://bitbucket.org/ramram43210/java/src/53e39342c1c41555c6e548783b3cf96ab7bd9ee6/BasicJava/StreamDemo_flatmap_intarray/?at=master

    See also:
  • All JavaEE Viedos Playlist
  • All JavaEE Viedos
  • All JAVA EE Links
  • Servlets Tutorial
  • All Design Patterns Links
  • JDBC Tutorial
  • Java Collection Framework Tutorial
  • JAVA Tutorial
  • Kids Tutorial
  • How to use flatMap method to convert Stream of Set to Stream of String | Streams in Java


    Click here to watch in Youtube : 
    https://www.youtube.com/watch?v=ruVGaln6rJs&list=UUhwKlOVR041tngjerWxVccw

    Student.java
    import java.util.HashSet;
    import java.util.Set;
    
    public class Student
    {
        private String name;
        private Set<String> bookSet;
    
        public void addBook(String bookName)
        {
            if (this.bookSet == null)
            {
                this.bookSet = new HashSet<>();
            }
            this.bookSet.add(bookName);
        }
    
        public String getName()
        {
            return name;
        }
    
        public void setName(String name)
        {
            this.name = name;
        }
    
        public Set<String> getBookSet()
        {
            return bookSet;
        }
    
        public void setBookSet(Set<String> bookSet)
        {
            this.bookSet = bookSet;
        }
    
    }
    
    FlatMapDemo1.java
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Set;
    import java.util.stream.Collectors;
    import java.util.stream.Stream;
    
    public class FlatMapDemo1
    {
        public static void main(String[] args)
        {
    
            Student student1 = new Student();
            student1.setName("Peter");
            student1.addBook("Java in Action");
            student1.addBook("Spring in Action");
            student1.addBook("Ruby in Action");
    
            Student student2 = new Student();
            student2.setName("John");
            student2.addBook("Java in Action");
            student2.addBook("Learning Java Script");
    
            List<Student> studentList = new ArrayList<>();
            studentList.add(student1);
            studentList.add(student2);
    
            /*
             * Stream<Set<String>>
             */
            Stream<Set<String>> setStream = studentList.stream()
                    .map(student -> student.getBookSet());
    
            /*
             * Stream<Set<String>> to Stream<String>
             */
            Stream<String> stringStream = setStream // Stream<Set<String>>
                    .flatMap(student -> student.stream()); // Stream<String>
    
            List<String> bookList = stringStream.distinct()
                    .collect(Collectors.toList());
    
            bookList.forEach(bookName -> System.out.println(bookName));
        }
    
    }
    
    Output
    Ruby in Action
    Java in Action
    Spring in Action
    Learning Java Script
    
    
    FlatMapDemo2.java
    import java.util.ArrayList;
    import java.util.List;
    import java.util.stream.Collectors;
    
    public class FlatMapDemo2
    {
        public static void main(String[] args)
        {
            Student student1 = new Student();
            student1.setName("Peter");
            student1.addBook("Java in Action");
            student1.addBook("Spring in Action");
            student1.addBook("Ruby in Action");
    
            Student student2 = new Student();
            student2.setName("John");
            student2.addBook("Java in Action");
            student2.addBook("Learning Java Script");
    
            List<Student> studentList = new ArrayList<>();
            studentList.add(student1);
            studentList.add(student2);
    
            List<String> bookList = studentList.stream()
                    .map(student -> student.getBookSet()) // Stream<Set<String>>
                    .flatMap(student -> student.stream()) // Stream<String>
                    .distinct().collect(Collectors.toList());
    
            bookList.forEach(bookName -> System.out.println(bookName));
        }
    
    }
    
    Output
    Ruby in Action
    Java in Action
    Spring in Action
    Learning Java Script
    
    
    Click the below link to download the code:
    https://sites.google.com/site/ramj2eev1/home/javabasics/StreamDemo_flatmap_streamofset.zip?attredirects=0&d=1

    Github Link:
    https://github.com/ramram43210/Java/tree/master/BasicJava/StreamDemo_flatmap_streamofset

    Bitbucket Link:
    https://bitbucket.org/ramram43210/java/src/53e39342c1c41555c6e548783b3cf96ab7bd9ee6/BasicJava/StreamDemo_flatmap_streamofset/?at=master

    See also:
  • All JavaEE Viedos Playlist
  • All JavaEE Viedos
  • All JAVA EE Links
  • Servlets Tutorial
  • All Design Patterns Links
  • JDBC Tutorial
  • Java Collection Framework Tutorial
  • JAVA Tutorial
  • Kids Tutorial
  • How to use flatMap method of Java 8 streams | Streams in Java 8


    Click here to watch in Youtube :
    https://www.youtube.com/watch?v=b75LVKzjiEc&list=UUhwKlOVR041tngjerWxVccw

    Click the below Image to Enlarge
    How to use flatMap method of Java 8 streams | Streams in Java 8
    How to use flatMap method of Java 8 streams | Streams in Java 8
    FlatMapDemo.java
    import java.util.Arrays;
    import java.util.stream.Stream;
    
    public class FlatMapDemo
    {
        public static void main(String[] args)
        {
    
            String[][] strArray = new String[][] { { "a", "b" }, { "c", "d" }, { "e", "f" } };
    
            // Stream<String[]>
            Stream<String[]> strArrayStream = Arrays.stream(strArray);
            
            //Convert  Stream<String[]> to Stream<String>
            Stream<String> strStream = strArrayStream.flatMap((x -> Arrays.stream(x)));
    
            // filter a stream of string
            Stream<String> filterdStream = strStream
                    .filter(x -> "c".equals(x.toString()));
    
            filterdStream.forEach(System.out::println); //Output is c
        }
    
    }
    
    Output
    c
    
    
    NonFlatMapDemo.java
    import java.util.Arrays;
    import java.util.stream.Stream;
    
    /**
     * 
     * This example will print an empty result, because filter() has
     * no idea how to filter a stream of String[].
     *
     */
    public class NonFlatMapDemo
    {
        public static void main(String[] args)
        {
    
            String[][] strArray = new String[][] { { "a", "b" }, { "c", "d" },{ "e", "f" } };
    
            // Stream<String[]>
            Stream<String[]> strArrayStream = Arrays.stream(strArray);
    
            // filter a stream of string[], and return a string[]?
            Stream<String[]> filterdStream = strArrayStream
                    .filter(x -> "c".equals(x.toString()));
    
            filterdStream.forEach(System.out::println); //Output is empty...
        }
    
    }
    
    Output
    //Output is empty...
    
    
    
    Click the below link to download the code:
    https://sites.google.com/site/ramj2eev1/home/javabasics/StreamDemo_flatMap.zip?attredirects=0&d=1

    Github Link:
    https://github.com/ramram43210/Java/tree/master/BasicJava/StreamDemo_flatMap

    Bitbucket Link:
    https://bitbucket.org/ramram43210/java/src/53e39342c1c41555c6e548783b3cf96ab7bd9ee6/BasicJava/StreamDemo_flatMap/?at=master

    See also:

  • All JavaEE Viedos Playlist
  • All JavaEE Viedos
  • All JAVA EE Links
  • Servlets Tutorial
  • All Design Patterns Links
  • JDBC Tutorial
  • Java Collection Framework Tutorial
  • JAVA Tutorial
  • Kids Tutorial
  • Thursday, 31 August 2017

    How to filter a Map and return a filtered Map using Java 8 streams | Streams in Java 8


    Click here to watch in Youtube :
    https://www.youtube.com/watch?v=y4dlPsXk3AQ&list=UUhwKlOVR041tngjerWxVccw

    StreamDemo.java
    import java.util.HashMap;
    import java.util.Map;
    import java.util.stream.Collectors;
    
    /**
     *
     * Example to filter a Map and return a map.
     */
    public class StreamDemo
    {
        public static void main(String[] args)
        {
    
            Map<Integer, String> fruitsMap = new HashMap<>();
            fruitsMap.put(1, "Apple");
            fruitsMap.put(2, "Orange");
            fruitsMap.put(3, "Banana");
    
             //Map -> Stream -> Filter -> Map
            Map<Integer, String> filteredMap = fruitsMap.entrySet().stream()
                    .filter(map -> map.getKey() == 2)
                    .collect(Collectors.toMap(p -> p.getKey(), p -> p.getValue()));
    
            System.out.println(filteredMap);
    
        }
    
    }
    
    Output
    {2=Orange}
    
    
    Click the below link to download the code:
    https://sites.google.com/site/ramj2eev1/home/javabasics/StreamDemo_filter_fruits_map_return_map.zip?attredirects=0&d=1

    Github Link:
    https://github.com/ramram43210/Java/tree/master/BasicJava/StreamDemo_filter_fruits_map_return_map

    Bitbucket Link:
    https://bitbucket.org/ramram43210/java/src/53e39342c1c41555c6e548783b3cf96ab7bd9ee6/BasicJava/StreamDemo_filter_fruits_map_return_map/?at=master

    See also:
  • All JavaEE Viedos Playlist
  • All JavaEE Viedos
  • All JAVA EE Links
  • Servlets Tutorial
  • All Design Patterns Links
  • JDBC Tutorial
  • Java Collection Framework Tutorial
  • JAVA Tutorial
  • Kids Tutorial
  • How to filter a Map and return a String value using Java 8 streams | Streams in Java 8


    Click here to watch in Youtube : 
    https://www.youtube.com/watch?v=HZq-KpXKieg&list=UUhwKlOVR041tngjerWxVccw

    StreamDemo.java
    import java.util.HashMap;
    import java.util.Map;
    import java.util.stream.Collectors;
    
    /**
     * 
     * Example to filter a Map and return a value.
     */
    public class StreamDemo
    {
        public static void main(String[] args)
        {
    
            Map<Integer, String> fruitsMap = new HashMap<>();
            fruitsMap.put(1, "Apple");
            fruitsMap.put(2, "Orange");
            fruitsMap.put(3, "Banana");
    
            String result = "";
            for (Map.Entry<Integer, String> entry : fruitsMap.entrySet())
            {
                if (2 == entry.getKey())
                {
                    result = entry.getValue();
                }
            }
            System.out.println("Before Java 8 : " + result);
    
            // Map -> Stream -> Filter -> String
            result = fruitsMap.entrySet().stream()
                    .filter(map -> 2 == map.getKey())
                    .map(map -> map.getValue())
                    .collect(Collectors.joining());
    
            System.out.println("With Java 8 : " + result);
    
        }
    
    }
    
    Output
    Before Java 8 : Orange
    With Java 8 : Orange
    
    
    Click the below link to download the code:
    https://sites.google.com/site/ramj2eev1/home/javabasics/StreamDemo_filter_fruits_map.zip?attredirects=0&d=1

    Github Link:
    https://github.com/ramram43210/Java/tree/master/BasicJava/StreamDemo_filter_fruits_map

    Bitbucket Link:
    https://bitbucket.org/ramram43210/java/src/53e39342c1c41555c6e548783b3cf96ab7bd9ee6/BasicJava/StreamDemo_filter_fruits_map/?at=master

    See also:
  • All JavaEE Viedos Playlist
  • All JavaEE Viedos
  • All JAVA EE Links
  • Servlets Tutorial
  • All Design Patterns Links
  • JDBC Tutorial
  • Java Collection Framework Tutorial
  • JAVA Tutorial
  • Kids Tutorial
  • How to convert list of sw engineer objects into a list of employee objects using Java 8 streams


    Click here to watch in Youtube :
    https://www.youtube.com/watch?v=EV5DK7WIHZw&list=UUhwKlOVR041tngjerWxVccw 

    Employee.java
    public class Employee
    {
        private String name;
        private int age;
    
        public Employee()
        {
    
        }
    
        public Employee(String name, int age)
        {
            super();
            this.name = name;
            this.age = age;
        }
    
        public String getName()
        {
            return name;
        }
    
        public void setName(String name)
        {
            this.name = name;
        }
    
        public int getAge()
        {
            return age;
        }
    
        public void setAge(int age)
        {
            this.age = age;
        }
    
        @Override
        public String toString()
        {
            return "Employee [name=" + name + ", age=" + age + "]";
        }
    
    }
    
    SoftwareEngineer.java
    public class SoftwareEngineer
    {
        private String name;
        private int age;
    
        public SoftwareEngineer(String name, int age)
        {
            super();
            this.name = name;
            this.age = age;
        }
    
        public String getName()
        {
            return name;
        }
    
        public void setName(String name)
        {
            this.name = name;
        }
    
        public int getAge()
        {
            return age;
        }
    
        public void setAge(int age)
        {
            this.age = age;
        }
    
    }
    
    NonStreamDemo.java
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;
    
    /**
     * 
     * List of objects -> List of other objects
     * 
     * This example shows you how to convert a list of SoftwareEngineer
     * objects into a list of Employee objects.
     */
    public class NonStreamDemo
    {
        public static void main(String[] args)
        {
    
            List<SoftwareEngineer> softwareEngineerList = Arrays.asList(
                    new SoftwareEngineer("Ram", 30),
                    new SoftwareEngineer("Peter", 27),
                    new SoftwareEngineer("Dave", 33));
    
            // Before java 8
            List<Employee> employeeList = convertToEmployee(softwareEngineerList);
            System.out.println(employeeList);
        }
    
        private static List<Employee> convertToEmployee(List<SoftwareEngineer> softwareEngineerList)
        {
    
            List<Employee> employeeList = new ArrayList<>();
    
            for (SoftwareEngineer softwareEngineer : softwareEngineerList)
            {
                Employee employee = new Employee();
                employee.setName(softwareEngineer.getName());
                employee.setAge(softwareEngineer.getAge());
                employeeList.add(employee);
            }
    
            return employeeList;
    
        }
    
    }
    
    Output
    [Employee [name=Ram, age=30], Employee [name=Peter, age=27], Employee [name=Dave, age=33]]
    
    
    StreamDemo.java
    import java.util.Arrays;
    import java.util.List;
    import java.util.stream.Collectors;
    
    /**
     * 
     * List of objects -> List of other objects
     * 
     * This example shows you how to convert a list of SoftwareEngineer
     * objects into a list of Employee objects.
     */
    public class StreamDemo
    {
        public static void main(String[] args)
        {
    
            List<SoftwareEngineer> softwareEngineerList = Arrays.asList(
                    new SoftwareEngineer("Ram", 30),
                    new SoftwareEngineer("Peter", 27),
                    new SoftwareEngineer("Dave", 33));
    
            // Java 8
            List<Employee> employeeList = softwareEngineerList.stream()
                    .map(softwareEngineer -> {
                        Employee employee = new Employee();
                        employee.setName(softwareEngineer.getName());
                        employee.setAge(softwareEngineer.getAge());
                        return employee;
                        }).collect(Collectors.toList());
    
            System.out.println(employeeList);
        }
    
    }
    
    Output
    [Employee [name=Ram, age=30], Employee [name=Peter, age=27], Employee [name=Dave, age=33]]
    
    
    Click the below link to download the code:
    https://sites.google.com/site/ramj2eev1/home/javabasics/StreamDemo_swl_to_empl_App.zip?attredirects=0&d=1

    Github Link:
    https://github.com/ramram43210/Java/tree/master/BasicJava/StreamDemo_swl_to_empl_App

    Bitbucket Link:
    https://bitbucket.org/ramram43210/java/src/53e39342c1c41555c6e548783b3cf96ab7bd9ee6/BasicJava/StreamDemo_swl_to_empl_App/?at=master

    See also:
  • All JavaEE Viedos Playlist
  • All JavaEE Viedos
  • All JAVA EE Links
  • Servlets Tutorial
  • All Design Patterns Links
  • JDBC Tutorial
  • Java Collection Framework Tutorial
  • JAVA Tutorial
  • Kids Tutorial
  • Google+ Followers

    Google+ Badge