面试题目——《CC150》Java









package cc150.java;
import java.util.Iterator;
public class CircularArray {
public static void main(String[] args) { //实现一个类似数组的数据结构,可以进行高效的旋转
// TODO 自动生成的方法存根
CircularArray ca_out = new CircularArray();
circularArray<Integer> ca = ca_out.new circularArray<Integer>(5);
ca.set(0, 0);
ca.set(1, 1);
ca.set(2, 2);
ca.set(3, 3);
ca.set(4, 4);
ca.rotate(5); //数组向右移位,也就是数组的head改变,到末尾之后会返回前
System.out.println(ca.get(4));
}
public class circularArray<T> implements Iterable<T>{ //环形数组
private T[] items; //无法创建泛型的数组,所以必须将数组转型为List<T>或者将items定义为List<T>
private int head=0; //指向数组开头的元素
public circularArray(int size){ //构造函数
items = (T[]) new Object[size];
}
private int convert(int index){ //转换正确的数组下标,index加上当前head
if(index < 0) //负数都会是0
index += items.length;
return (head+index) % items.length;
}
public void rotate(int shiftRight){ //轮换,改变数组的head下标
head = convert(shiftRight);
}
public T get(int i){ //取得数组中某个下标的元素
if(i<0 || i>=items.length)
throw new java.lang.IndexOutOfBoundsException("...");
return items[convert(i)];
}
public void set(int i,T item){ //赋值
items[convert(i)] = item;
}
//实现迭代器接口
@Override
public Iterator<T> iterator() {
// TODO 自动生成的方法存根
return new circularArrayIterator<T>(this);
}
private class circularArrayIterator<TI> implements Iterator<TI>{
private int _current = -1;
private TI[] _items;
public circularArrayIterator(circularArray<TI> array){ //传递的是circularArray<TI>本身
_items = array.items; //_items和item相等
}
@Override
public boolean hasNext() {
// TODO 自动生成的方法存根
return _current < items.length-1;
}
@Override
public TI next() {
// TODO 自动生成的方法存根
_current++;
TI item = (TI) _items[convert(_current)];
return item;
}
@Override
public void remove(){
throw new UnsupportedOperationException("...");
}
}
}
}
面试题目——《CC150》Java的更多相关文章
- java 面试题目(java高级架构)
题目信息 java基础: 1. Java 基础 JDK 和 JRE 有什么区别? Java中JDK和JRE的区别是什么?它们的作用分别是什么? == 和 equals 的区别是什么? 两个对象的 ...
- (转)喜马拉雅2018 Java面试题目
背景:将网上的题目整理下. java基础 1:hashTable hashMap ConcurrentHashMap 的区别.数据结构.线程安全 2:equals和==区别, 重写equals一定要重 ...
- Java高概率面试题目—finally
在Java面试中关于finally的面试题目出现的概率非常高,而且一旦面试官问起绝不会是蜻蜓点水,而是会向你发起层层递进地“连环问”,并且回答这系列问题常常需要代码的辅助,可谓考验基础的面试利题.究竟 ...
- java常见面试题目(一)
在大四实习阶段,秋招的时候,面试了很多家公司,总结常见的java面试题目:(答案可以自己百度) 1.你所用oracle的版本号是多少? 2.tomcat修改8080端口号的配置文件是哪个? 3.myb ...
- 2020阿里Java面试题目大汇总,看看你离阿里还有多远,附答案!
前言 首先说一下情况,我大概我是从去年12月份开始看书学习,到今年的6月份,一直学到看大家的面经基本上百分之90以上都会,我就在5月份开始投简历,边面试边补充基础知识等.也是有些辛苦.终于是在前不久拿 ...
- 2018年4月份,阿里最新的java程序员面试题目,仅供参考。
目录 技术一面(23问) 技术二面(3大块) 性能优化(21点) 项目实战(34块) JAVA方向技术考察点(15点) JAVA开发技术面试中可能问到的问题(17问) 阿里技术面试1 1.Java I ...
- PHP面试题目搜集
搜集这些题目是想在学习PHP方面知识有更感性的认识,单纯看书的话会很容易看后就忘记. 曾经看过数据结构.设计模式.HTTP等方面的书籍,但是基本看完后就是看完了,没有然后了,随着时间的推移,也就渐渐忘 ...
- JAVA面试精选【Java基础第一部分】
这个系列面试题主要目的是帮助你拿轻松到offer,同时还能开个好价钱.只要能够搞明白这个系列的绝大多数题目,在面试过程中,你就能轻轻松松的把面试官给忽悠了.对于那些正打算找工作JAVA软件开发工作的童 ...
- Android面试题目及其答案
转自:http://blog.csdn.net/wwj_748/article/details/8868640 Android面试题目及其答案 1.Android dvm的进程和Linux的进程, 应 ...
随机推荐
- mysqldump 备份命令使用中的一些经验总结
mysqldump的一个小坑(自测) 正文:经常使用接触mysql复制功能的朋友应该对mysqldump命令不陌生吧,鄙人最近也在研究学习这一块的内容,经过几天的测试,发现mysqldump使用中容易 ...
- ANDROID开发中注意不同手机CPU架构对SO文件的不同需求。
如果没有对应于手机的SO文件,那么在调用第三方SDK时,会经常发生莫明其妙的错误.所以了解你调式或开发的目的手机CPU架构是很有必要的.
- Win10系统旗舰版ghost版系统镜像下载
微软已经发布了Win10预览版10041快速版更新,但通过Windows更新的方式比较慢.现在微软官方已经发布Win10预览版10041的系统ISO镜像,还没更新这一版本的朋友可以使用该镜像进行更新. ...
- 一个开关电源传导、辐射处理案例-----Layout环路
这是一款输入宽电压120-277V 60HZ,输出48V,273mA的电源,使用美芯晟MT7933,采用Buck拓扑结构. 注:在最初的设计中,预留电感L1.L2,CBB电容C1.C2作为传导测试元 ...
- 三维网格补洞算法(Poisson Method)
下面介绍一种基于Poisson方程的三角网格补洞方法.该算法首先需要根据孔洞边界生成一个初始化补洞网格,然后通过法向估算和Poisson方程来修正补洞网格中三角面片的几何形状,使其能够适应并与周围的原 ...
- Url和Uri的区别
URL: URL是Uniform Resoure Locator(统一资源定位器)的缩写.就是WWW页的地址. 其URL地址格式排列为:scheme://host:Port/path其中 ·Inter ...
- Struts2 自定义MVC框架
一.Model1与Model2: Model1:就是一种纯jsp开发技术,将业务逻辑代码和视图渲染代码杂糅在一起. Model2:Model2是在Model1的基础上,将业务逻辑的代码分离开来,单独形 ...
- nginx下目录浏览及其验证功能配置记录
工作中常常有写不能有网页下载东西的需求,在Apache下搭建完成后直接导入文件即可达到下载/显示文件的效果;而Nginx的目录列表功能默认是关闭的,如果需要打开Nginx的目录列表功能,需要手动配置, ...
- HTML5入门(---------------HTML——基本骨架--------------)
HTML基础 一.HTML 超文本标记语言.英文全拼:HyperText Markup Language.负责网页的语义描述. 二.HTML基本骨架 <!DOCTYPE html> < ...
- ModernUI教程:创建自定义主题
Modern UI WPF包括两个内置主题(dark与light).在1.0.3版本,您可以构建自定义的主题.Modern UI应用程序通常有在全局资源字典App.xaml中有如下定义 ...