List泛型



import java.util.Random;
import java.util.concurrent.TimeUnit;



class MyList<T> {
	
	private static class Data<U> {
		U value;
		Data<U> prev;
		Data<U> next;
		Data(U value, Data<U> prev, Data<U> next) {
			this.value = value;
			this.prev = prev;
			this.next = next;
		}
	}

	private Data<T> front = null;
	private Data<T> back = null;
	private int size = 0;
	
	void pushFront(T value) {
		if(size == 0) {
			back = front = new Data<T>(value, null, null);
		}
		else {
			Data<T> x = new Data<T>(value, null, front);
			front.prev = x;
			front = x;
		}
		size++;
	}
	
	void pushBack(T value) {
		if(size == 0) {
			back = front = new Data<T>(value, null, null);
		}
		else {
			Data<T> x = new Data<T>(value, back, null);
			back.next = x;
			back = x;
		}
		size++;
	}
	
	T getHead() {
		if(size == 0)
			return null;
		T ret = front.value;
		front = front.next;
		size--;
		return ret;
	}
	
	T getBack() {
		if(size == 0)
			return null;
		T ret = back.value;
		back = back.prev;
		size--;
		return ret;
	}
}
	
public class Main {
	
	public static void main(String[] args) {
		new Thread(new Runnable(){
			@Override
			public void run() {
				Random rand = new Random();
				MyList<Integer> deque = new MyList<Integer>();
				while(true) {
					try {
						TimeUnit.SECONDS.sleep(1);
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
					if(rand.nextInt(5) <= 1) { //push 
						if(rand.nextBoolean())
							deque.pushFront(rand.nextInt());
						else
							deque.pushBack(rand.nextInt());
					}
					else { //get
						if(rand.nextBoolean()) {
							System.out.println("Integer: " + deque.getHead());
						} 
						else {
							System.out.println("Integer: " + deque.getBack());
						}
					}
				}
			}
		}).start();
		new Thread(new Runnable(){
			@Override
			public void run() {
				Random rand = new Random();
				MyList<Double> deque = new MyList<Double>();
				while(true) {
					try {
						TimeUnit.SECONDS.sleep(1);
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
					if(rand.nextInt(5) <= 1) { //push 
						if(rand.nextBoolean())
							deque.pushFront(rand.nextDouble());
						else
							deque.pushBack(rand.nextDouble());
					}
					else { //get
						if(rand.nextBoolean()) {
							System.out.println("========Double: " + deque.getHead());
						} 
						else {
							System.out.println("========Double: " + deque.getBack());
						}
					}
				}
			}
		}).start();
	}
	
	
}

/*
Integer: null
========Double: null
Integer: null
========Double: null
Integer: null
========Double: null
Integer: null
Integer: null
========Double: 0.8163364486645169
Integer: null
========Double: null
Integer: null
Integer: 1371855456
========Double: 0.8149725112586352
Integer: null
Integer: -953435326
========Double: 0.4998311221315688
========Double: 0.5474754850786306
Integer: 578019531
Integer: -354045382
========Double: 0.5350067820324665
========Double: 0.7138483138323032
========Double: 0.6447447887022895
========Double: 0.053940919224031436
Integer: 2082486061
========Double: null
Integer: -387340288
========Double: 0.16976522422818274
========Double: 0.9210004845217443
Integer: 868038834
========Double: 0.5761645596787701
========Double: 0.7307563570314314
Integer: -75060098
========Double: null
Integer: 1771556191
========Double: null
Integer: -1470240185
Integer: 1015857195
Integer: -1505552788
========Double: 0.5255897040260163
Integer: 1102310584
========Double: 0.48663361891226664
Integer: -602291716
========Double: 0.26022517734216233
Integer: 1017666170
Integer: null
========Double: 0.6486041724539308
Integer: null
========Double: null
========Double: 0.3668878512131296
========Double: null
Integer: -33712299
========Double: 0.725863123878524
========Double: 0.1854256915265613
Integer: 809072275
========Double: null
========Double: null
Integer: 1824153699
Integer: -852775118
========Double: 0.045929878967493565
========Double: null
========Double: 0.5353368785459315
Integer: 1834939393
========Double: 0.5326277759876461
========Double: null
========Double: null
Integer: -129412745
========Double: 0.9363331876013318
Integer: -1742464234
Integer: 586620012
========Double: 0.7314669283225262
Integer: 1501134279
========Double: 0.92433017435357
Integer: 651252226
Integer: -1958012352
========Double: 0.12361635752089006
Integer: -290270535
Integer: 360180197
========Double: 0.10842444797166106
Integer: 1086761151
Integer: -158051459
========Double: 0.9119231802305054
Integer: 85522900
========Double: 0.28806680700111675
Integer: -1502183055
Integer: -495227680
========Double: 0.16576320691926727
Integer: 105449582
========Double: 0.5895022182429307
Integer: -1701281597
========Double: 0.09522858591340799
Integer: null
Integer: null
========Double: 0.062226283830654205
Integer: 1859000929
*/


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值