单例模式和排序算法

Posted 程序人的生活

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单例模式和排序算法相关的知识,希望对你有一定的参考价值。

前几篇分享的都是一些理论、一些概念的介绍。今天换一换口味,为大家来一篇以代码为主的开胃小菜。
给大家一段小小的回忆,10年时和很多同学一样刚刚接触Java语言,学习循环语法老师给我们分享了一段代码轻描淡写的完成了杨辉三角的构建。自此以后Java就深深地吸引了我。闲话少说我就直接上代码了。
int rows = 10;
       for (int i = 0; i < rows; i++) {
           int number = 1;
           // 打印空格字符串
           System.out.format("%" + (rows - i) * 2 + "s", "");
           for (int j = 0; j <= i; j++) {
               System.out.format("%4d", number);
               number = number * (i - j) / (j + 1);
           }
       System.out.println();

    }

运行的结果如下图所示:


冒泡排序算法

         

int[] numbers = new int[]{1,11,10,34,21,5,8,2,3,9,4};
int
i,j;
for
(i=0;i<numbers.length-1;i++)
{
for(j=0;j<numbers.length-1-i;j++)
{
if(numbers[j]>numbers[j+1])
{
int temp = numbers[j];
numbers[j] = numbers[j+1];
numbers[j+1] = temp;
}
}
}
System.out.println("从小到大排序后的结果是:");
for
(i=0;i<numbers.length;i++)
System.out.print(numbers[i]+" ");


    重点介绍一下Java单例模式的几种实现。单例模式一般来说分为懒汉模式和饿汉模式,懒汉模式分为线程安全和线程不安全的实现方式。


     饿汉模式: 

public class Single {

// 私有构造方法
private Single(){}

// 新建对象
private static final Single single = new Single();
// 获取单例对象
public static Single getInstance(){
return single;
}

}

    

懒汉模式线程不安全

public class Single {

// 私有构造方法
private Single(){}

// 新建对象
private static final Single single = null;
// 获取单例对象
public static Single getInstance(){
if (single == null) {
return new Single();
}
return single;
}

}

            

懒汉模式线程安全通过加锁实现

    

public class Single {

// 私有构造方法
private Single(){}

// 新建对象
private static final Single single = null;
// 获取单例对象
public static Single getInstance(){
if (single == null) {
synchronized (Single.class) {
if (single == null) {
return new Single();
}
}
}
return single;
}

}


饿汉模式内部类实现线程安全

   

public class Single {

public static class SingleInstnce {
private static Single sing = new Single();
}

// 私有构造方法
private Single(){}

// 新建对象
private static final Single single = null;
// 获取单例对象
public static Single getInstance(){
return SingleInstnce.sing;
}

}


    已上的分享内容是作为一名初级Java工程师必备的要求。多年的面试生涯中我也曾多次手写上述的代码。下一章节我想和大家聊一聊HashMap 探讨HashMap的底层原理。我们下期再见

以上是关于单例模式和排序算法的主要内容,如果未能解决你的问题,请参考以下文章

小米面试

设计模式之单例模式

经典算法题: 实现Singleton单例模式

常用代码片段

常用代码片段

最基本 几个设计模式思想