Sunday, November 9, 2014

Sort Array using Arrays.sort


import java.util.Arrays;

public class SortArrayTest {
    public static void main(String[] args){
        String[] sa = {"banana","apple","orange"};
        Arrays.sort(sa);
       
        for (String s:sa){
            System.out.println(s);
        }
    }

}

OUTPUT
apple
banana
orange

Deep Copy

// deep copy, in clone() it creates a new object

public class DeepCopyTest {
   
    public static void main(String[] args) throws CloneNotSupportedException{
        Student student = new Student("Jet","Chinese"); // create student object
        Student student2 = student.clone(); // deep copy a new object student2
        System.out.println("student name="+student2.getName()+" subject="+student2.getSubject().getName());// print out this new object student2
        student.setName("Tom"); // change original object value
        student.getSubject().setName("English");
        System.out.println("student name="+student2.getName()+" subject="+student2.getSubject().getName()); // print out this new object value. it's changed.
               
    }

}



public class Student implements Cloneable{

    private String name;
    private Subject subject;
   
    public Student(String studentName, String subjectName) {
        this.name = studentName;
        this.subject = new Subject(subjectName);
    }

    @Override
    public Student clone() throws CloneNotSupportedException {
        Student student = new Student(name,subject.getName());
        return student ;
    }

    public String getName() {
        return this.name;
    }

    public Subject getSubject() {
        return this.subject;
    }

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

}

package deepcopy;

public class Subject {
    private String name;
   
    public Subject(String subjectName) {
        this.name = subjectName;
    }

    public String getName() {
        return name;
    }

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


}
OUTPUT



student name=Jet subject=Chinese
student name=Jet subject=Chinese

Friday, November 7, 2014

StringBuilder.insert - insert a string at position


public class InsertTest {
   public static void main(String[] args){
    StringBuilder sb = new StringBuilder("abcd");
    sb.insert(sb.indexOf("b"),"word");// insert word at position of b
   
    System.out.println(sb.toString());
   }

}

OUTPUT:
awordbcd

Tuesday, November 4, 2014

Shallow Copy


cloned object has own copy for primitive member but for object member, it will be shared with original object

http://www.jusfortechies.com/java/core-java/deepcopy_and_shallowcopy.php 

public class ShallowCopyTest {
   
    public static void main(String[] args) throws CloneNotSupportedException{
       
        Student stud = new Student("Jet","English");
        Student stud2 = (Student) stud.clone();
        System.out.println("student name="+stud2.getName()+" subject="+stud2.getSubject().getName());
        stud.setName("Tom");
        stud.getSubject().setName("Chinese");
        System.out.println("after original object is updated, cloned student name="+stud2.getName()+" subject="+stud2.getSubject().getName());
    }

}



public class Student implements Cloneable{

    private String name;
    private Subject subject;
   
    public Student(String studentName, String subjectName) {
        this.name = studentName;
        this.subject = new Subject(subjectName);
    }

    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone();
    }

    public String getName() {
        return this.name;
    }

    public Subject getSubject() {
        return this.subject;
    }

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

}


Wednesday, October 29, 2014

Use BufferedReader to read a file


import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;

public class BufferedReaderTest {
   
    public static void main(String[] args) throws Exception{
        String fileName = "c:\\tmp\\test.txt";
        File file = new File(fileName);
        FileReader fr = new FileReader(file);
        BufferedReader br = new BufferedReader(fr);
        String line = "";
        while ((line = br.readLine())!=null){
            System.out.println("line="+line);
           
        }
        br.close();
        fr.close();
    }

}

Tuesday, October 28, 2014

Use BufferedWriter write to a file


import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;

public class BufferedWriterTest {
   
    public static void main(String[] args) throws IOException{
        String fileName = "C:\\tmp\\test.txt";
        File file = new File(fileName);    // File needs fileName
        FileWriter fw =  new FileWriter(file);    // so here use Writer implementing class - FileWriter
        BufferedWriter bw = new BufferedWriter(fw); //Writer can not be initialized b/c it's abstract class
        try {
            bw.write("this is my test file");
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally{
            bw.close();    // when close, the content can be written to the file
            fw.close();
        }

       
    }

}

Sunday, October 26, 2014

Collections.synchronizedMap when map is used in thread


import java.util.Collections;
import java.util.HashMap;
import java.util.Map;


// HashMap is not synchronized

public class MapTest {
    public static void main(String[] args){
        Map<String, String> map = Collections.synchronizedMap(new HashMap<String, String>());
        map.put("1", "a");
        map.put("2", "b");
        map.put("3", "c");
       
        for (Map.Entry<String, String> entry:map.entrySet()){
           
            System.out.println("key="+entry.getKey()+" value="+entry.getValue());
           
        }
       
    }

}


OUTPUT:
key=3 value=c
key=2 value=b
key=1 value=a