java面试算法与设计(高级)
2017-09-15 11:18
197 查看
1、单例模式
代码:public class SinglePartten {
// 饿汉式
/*优点:实现简单,缺点:在不需要的时候白创建对象,造成资源浪费*/
private final static SinglePartten singlePartten=new SinglePartten();
private SinglePartten(){}
public static SinglePartten getInstance(){
return singlePartten;
}
//懒汉式
/*优点:需要对象时才进行创建,缺点:线程不安全,需通过synchronized 控制*/
private static SinglePartten singlePartten;
private SinglePartten(){}
public static synchronized SinglePartten getInstance(){
if(singlePartten==null){
singlePartten= new SinglePartten();
}
return singlePartten;
}
}
2、java实现链表
代码:package com.loan.controller;
import com.loan.entity.User;
/**
* @author user
*用java实现链表
*/
public class MyList {
//列表的开始节点,方便判断列表是否为空
private Node head;
class Node{
private Object data;//数据
private Node next;//下个节点指针
public Node(Object data){
this.data=data;
this.next=null;
}
}
//列表构造方法
public MyList(){
head=null;
}
//清空列表
public void removeList(){
head=null;
}
//遍历链表并返回个数
public void travel(){
Node n=head;
int count=0;
while(n!=null){
count++;
System.out.println("第"+count+"个数据:"+n.data.toString());
n=n.next;
}
}
public int size(){
Node n=head;
int count=0;
while(n!=null){
count++;
n=n.next;
}
return count;
}
//插入节点
public void insert(Object object,int pos){
Node newNode=new Node(object);
int size=size();
if(pos<0||pos>size){
System.out.println("插入下标有误");
}
else if(pos==0){//表头插入
newNode.next=head;
head=newNode;
}
else if(pos>=size-1){//表尾插入,小标size()-1的next指向新节点,新节点next置为null
getNodeByPos(size-1).next=newNode;
}
else{//在中间位置插入
newNode.next=getNodeByPos(pos);
getNodeByPos(pos-1).next=newNode;
}
}
public Node getNodeByPos(int pos){
Node n=head;
if(pos<0||pos>size()){
System.out.println("插入下标有误");
return null;
}
else if(pos==0){
return head;
}
else{
for(int i=0;i<pos;i++)
n=n.next;
return n;
}
}
public static void main(String[] args) {
MyList list=new MyList();
list.insert(100, 0);
list.insert(7, 1);
list.insert(4, 2);
list.insert(500, 0);
list.insert(23, 3);
list.insert(33, 1);
list.travel();
}
}
结果:
相关文章推荐
- 利用高级Java、算法、三角学、分布计算设计自己的智能机器人--(重锤痛击续2)
- 利用高级Java、算法、三角学、分布计算设计自己的智能
- 利用高级Java、算法、三角学、分布计算设计自己的智能机器人
- java面试算法与设计(基础)
- java面试算法:设计搜索输入框的输入提示功能
- "单例模式"-之Java,Android面试必问设计模式(3/9)
- Java高级工程师面试题目汇集
- Java高级开发工程师面试考纲
- [置顶] Java 经典算法笔试面试题目十题
- 【LeetCode-面试算法经典-Java实现】【104-Maximum Depth of Binary Tree(二叉树的最大深度)】
- think in java interview-高级开发人员面试宝典(三)
- Java面试中遇到的一些经典算法题目
- JVM知识点总览-高级Java工程师面试必备
- Java数据结构与算法--高级排序
- think in java interview-高级开发人员面试宝典(九)
- think in java interview-高级开发人员面试宝典(五)
- Java面试-算法篇
- 【LeetCode-面试算法经典-Java实现】【064-Minimum Path Sum(最小路径和)】
- 高级java程序员的必备面试知识点
- think in java interview-高级开发人员面试宝典(四)