仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1202|回复: 19
打印 上一主题 下一主题

[学习教程] JAVA编程:Java数据布局---基于数组的表

[复制链接]
莫相离 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:47:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
windows系统样,他们做了什么事或者留了一些后门程序,谁都不知道,二,java开发是跨平台,任何系统上都可以运行,对于保密型系统和大型系统开发这是必要的数据|数据布局|数组我没看过其他言语版的数据布局,但以为java的完成办法很奇妙--用类和对象来完成.基于数组的表,头脑很复杂就是界说一个类用来存储一组数据,我界说的是ArrayListClass类,在类中界说用来操纵数组的办法.实在就是这么复杂,但详细操纵起来就会碰到良多贫苦了!
我们这个ArrayListClass类中起首应当包含一个数组型的域list,用来寄存数据,如许放在统一数组中数据之间就发生了地位上的接洽,使对数据的操纵便的复杂.但是这个数组究竟是甚么数据范例的,我们希冀这个表能用于一切的数据范例,我们不克不及将他纯真的流动成某一种.以是我们必需将这个数据大众化,办理的举措就是界说一个类,作为一切数据范例的超类.看这个DataElement:
publicabstractclassDataElement{
publicabstractbooleanequals(DataElementotherElement);
publicabstractintcompareTo(DataElementotherElement);
publicabstractvoidmakeCopy(DataElementotherElement);
publicabstractDataElementgetCopy();
}

将他界说成为笼统的,再在界说其他数据范例时承继并完成它,我界说了两个数据范例IntElement和StringElement:

IntElement:

publicclassIntElementextendsDataElement{
protectedintnum;

//constructors
publicIntElement(){
num=0;
}
publicIntElement(intnumber){
num=number;
}
publicIntElement(IntElementotherElement){
num=otherElement.num;
}

///get-setMethods
publicvoidsetNum(intnumber){
num=number;
}
publicintgetNum(){
returnnum;
}


/*(non-Javadoc)
*@seeDataElement#equals(DataElement)
*/
publicbooleanequals(DataElementotherElement){
//TODOAuto-generatedmethodstub
IntElementnewe=(IntElement)otherElement;
return(this.num==newe.num);
}

/*(non-Javadoc)
*@seeDataElement#compareTo(DataElement)
*/
publicintcompareTo(DataElementotherElement){
//TODOAuto-generatedmethodstub
IntElementnewe=(IntElement)otherElement;
if(this.num==newe.num)
return0;
elseif(this.num>newe.num)
return1;
else
return-1;
}

/*(non-Javadoc)
*@seeDataElement#makeCopy(DataElement)
*/
publicvoidmakeCopy(DataElementotherElement){
//TODOAuto-generatedmethodstub
IntElementnewe=(IntElement)otherElement;
this.num=newe.num;

}

/*(non-Javadoc)
*@seeDataElement#getCopy()
*/
publicDataElementgetCopy(){
//TODOAuto-generatedmethodstub
IntElementnewElement=newIntElement();
newElement.num=this.num;
returnnewElement;
}
publicStringtoString(){
returnString.valueOf(num);
}
}

StringElement:

publicclassStringElementextendsDataElement{

/**
*
*/
privateStringstr;

//constructors
publicStringElement(){
str=null;

}
publicStringElement(Stringstring){
str=string;
}
publicStringElement(StringElementotherElement){
str=otherElement.str;
}

//get-setMethods
publicvoidsetStr(Stringstring){
str=string;
}
publicStringgetStr(){
returnstr;
}

/*(non-Javadoc)
*@seeDataElement#equals(DataElement)
*/
publicbooleanequals(DataElementotherElement){
//TODOAuto-generatedmethodstub
StringElementnewe=(StringElement)otherElement;
return(str==newe.str);
}

/*(non-Javadoc)
*@seeDataElement#compareTo(DataElement)
*/
publicintcompareTo(DataElementotherElement){
//TODOAuto-generatedmethodstub
StringElementnewe=(StringElement)otherElement;


return(str.compareTo(newe.str));
}

/*(non-Javadoc)
*@seeDataElement#makeCopy(DataElement)
*/
publicvoidmakeCopy(DataElementotherElement){
//TODOAuto-generatedmethodstub
StringElementnewe=(StringElement)otherElement;
str=newe.str;
}

/*(non-Javadoc)
*@seeDataElement#getCopy()
*/
publicDataElementgetCopy(){
//TODOAuto-generatedmethodstub

StringElementothere=newStringElement();
othere.str=str;
returnothere;

}

publicStringtoString(){
returnstr;
}
}

已界说好了数据范例,以是list的数据范例我们就能够界说为DateElement[]了,如许就能够包含以是你想要的了,只需你在用的时分界说一个DataElement的子类就好了,这恰是java承继的精华地点.我们接着界说ArrayListClass类:

protectedintlength;
protectedintmaxSize;
protectedDataElement[]list;这就是它的一切域了.

接上去就是它的办法了,我们对表的操纵应当有良多种,好比拔出、查询、删减等等,我们要逐一的完成,详细办法不再赘述,且看最初完成代码

publicabstractclassArrayListClass{
//fields
protectedintlength;
protectedintmaxSize;
protectedDataElement[]list;

//defaltconstructors
publicArrayListClass(){
length=0;
maxSize=100;
list=newDataElement[maxSize];
}
//constructors
publicArrayListClass(intsize){
if(size<=0){
System.err.println("Thearrysizemustbepositive.Creatinganarrayofsize100.");
maxSize=100;
}
else
maxSize=size;
length=0;
list=newDataElement[maxSize];
}
publicArrayListClass(ArrayListClassotherList){
maxSize=otherList.maxSize;
length=otherList.length;
list=newDataElement[maxSize];
for(inti=0;i<length;i++){
list[i]=otherList.list[i].getCopy();
}
}

//methods
publicbooleanisEmpty(){
return(length==0);
}
publicbooleanisFull(){
return(length==maxSize);
}
publicintlistSize(){
returnlength;
}
publicintmaxListSize(){
returnmaxSize;
}
publicvoidprint(){
for(inti=0;i<length;i++){
System.out.print(list[i]+"");
}
System.out.println();
}
publicbooleanisItemAtEqual(intlocation,DataElementitem){
return(list[location].equals(item));
}
publicvoidinsrtAt(intlocation,DataElementinsertItem){
if(location<0||location>+maxSize){
System.out.println("Thepositionoftheitemtobeinsertedisoutofrange!!");
}
else
if(length>=maxSize)
System.err.println("Cantinsertinafulllist!!");
else{
for(inti=length;i>location;i--){
list[i]=list[i-1];
}
list[location]=insertItem.getCopy();
length++;
}
}
publicvoidinsertEnd(DataElementinsertItem){
if(length>=maxSize){
System.err.println("Cantinsertinafulllist!!");
}

else{
list[length]=insertItem.getCopy();
length++;
}
}
publicvoidremoveAt(intlocation){
if(location<0||location>=length){
System.err.println("Thelocationyouwanttoremoveisoutofrange!!");
}
else{
for(inti=location;i<length-1;i++){
list[i]=list[i+1];
}
list[length]=null;
length--;
}
}
publicDataElementretrieveAt(intlocation){
if(location<0||location>=length){
System.err.println("Thelocationofitemtoberetrievedisoutofrange!!");
returnnull;
}
else{
returnlist[location].getCopy();
}
}
publicvoidreplacAt(intlocation,DataElementrepItem){
if(location<0||location>=length)
System.out.println("Thepositionofitemtobereplacedisoutofrange!!");
else
list[location]=repItem.getCopy();
}
publicvoidclearList(){
for(inti=0;i<length;i++){
list[i]=null;
}
length=0;
System.gc();
}
publicvoidcopyList(ArrayListClassotherList){
if(this!=otherList){
for(inti=0;i<length;i++)
list[i]=null;
System.gc();
maxSize=otherList.maxSize;
length=otherList.length;
list=newDataElement[maxSize];

for(intj=0;j<length;j++)
list[j]=otherList.list[j].getCopy();
}
}
publicabstractintseqSearch(DataElementseqItem);
publicabstractvoidinsert(DataElementinsertItem);
publicabstractvoidremove(DataElementremoveItem);
}
看到代码的最初你回发明这个类实际上是一个笼统类,为何要如许界说呢?之以是如许我们是为了针对分歧是范例:按次表和非按次表.不难设想他们的一些办法是存在差别的,先看一下非按次表:

publicclassUnorderedArrayListextendsArrayListClass{

/**
*
*/
publicUnorderedArrayList(){
super();
//TODOAuto-generatedconstructorstub
}

/*(non-Javadoc)
*@seeArrayListClass#seqSearch(DataElement)
*/
publicintseqSearch(DataElementseqItem){
//TODOAuto-generatedmethodstub
intloc;
booleanfound=false;

for(loc=0;loc<length;loc++)
if(list[loc].equals(seqItem))
{
found=true;
break;
}
if(found)
returnloc;
else
return-1;
}

/*(non-Javadoc)
*@seeArrayListClass#insert(DataElement)
*/
publicvoidinsert(DataElementinsertItem){
//TODOAuto-generatedmethodstub
intloc;
if(length==0)
list[length++]=insertItem.getCopy();
else
if(length==maxSize)
System.err.println("Cantinsertinafulllist!!");
else{
loc=seqSearch(insertItem);

if(loc==-1)
list[length++]=insertItem.getCopy();
else
System.err.println("Theitemtobeinsertedisallreadyinthelist!!");

}
}

/*(non-Javadoc)
*@seeArrayListClass#remove(DataElement)
*/
publicvoidremove(DataElementremoveItem){
//TODOAuto-generatedmethodstub
intloc;

if(length==0)
System.err.println("Cantdeletefromaemptylist!!");
else{
loc=seqSearch(removeItem);
if(loc!=-1)
removeAt(loc);
else
System.err.println("Theitemtobedeletedisnotinthelist!!");
}

}

}

就是这么复杂!!信任按次表也能够轻松高顶了.


关于第二点:俺问问你,如果是企业级项目的话,诸如RMI,EJB,等一些关键技术,这些难道都不需要学么?如果光是使用jsp,servlet,javabean的话。
深爱那片海 该用户已被删除
沙发
发表于 2015-1-19 17:55:27 | 只看该作者
是一种语言,用以产生「小应用程序(Applet(s))
乐观 该用户已被删除
板凳
发表于 2015-1-24 15:16:03 | 只看该作者
所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
因胸联盟 该用户已被删除
地板
发表于 2015-1-31 15:33:10 | 只看该作者
那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!
小妖女 该用户已被删除
5#
发表于 2015-2-6 08:46:16 | 只看该作者
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
海妖 该用户已被删除
6#
发表于 2015-2-13 15:42:17 | 只看该作者
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
老尸 该用户已被删除
7#
发表于 2015-2-26 11:53:48 | 只看该作者
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
简单生活 该用户已被删除
8#
发表于 2015-3-3 01:44:25 | 只看该作者
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
金色的骷髅 该用户已被删除
9#
发表于 2015-3-6 10:54:09 | 只看该作者
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
再现理想 该用户已被删除
10#
发表于 2015-3-8 22:07:56 | 只看该作者
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
飘飘悠悠 该用户已被删除
11#
发表于 2015-3-9 00:04:07 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
分手快乐 该用户已被删除
12#
发表于 2015-3-11 07:22:53 | 只看该作者
Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。
活着的死人 该用户已被删除
13#
发表于 2015-3-17 23:09:01 | 只看该作者
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
变相怪杰 该用户已被删除
14#
发表于 2015-3-25 05:48:27 | 只看该作者
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
莫相离 该用户已被删除
15#
 楼主| 发表于 2015-3-27 18:29:52 | 只看该作者
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
精灵巫婆 该用户已被删除
16#
发表于 2015-3-31 01:10:51 | 只看该作者
是一种突破用户端机器环境和CPU
第二个灵魂 该用户已被删除
17#
发表于 2015-4-6 08:37:49 | 只看该作者
Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。
透明 该用户已被删除
18#
发表于 2015-4-7 22:32:47 | 只看该作者
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
只想知道 该用户已被删除
19#
发表于 2015-4-14 22:50:49 | 只看该作者
Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。
蒙在股里 该用户已被删除
20#
发表于 2015-4-27 14:13:52 | 只看该作者
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 17:56

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表