数据结构教程java语言描述(数据结构JAVA)
大家好,感谢邀请,今天来为大家分享一下数据结构教程java语言描述的问题,以及和数据结构JAVA的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!
五道java语言描述的数据结构编程题,请求给予详细解答
第一题:
//使用集合提供的工具方法
public static List<Integer> merge(List<Integer> a, List<Integer> b){
//a,b not null
//全部放到一个set里面,使得元素合并
Set<Integer> set= new HashSet<Integer>(a);
set.addAll(b);
//将set里面的元素放到列表再转为数组
Integer[] array= new ArrayList<Integer>(set).toArray(new Integer[1]);
//升序排序
Arrays.sort(array);
//将排序后的数组转为list
return Arrays.asList(array);
}
//自己写的算法, a为升序列表,b为降序列表
public static List<Integer> merge2(List<Integer> a, List<Integer> b){
//a,b not null
int aSize= a.size();
int bSize= b.size();
List<Integer> result= new ArrayList<Integer>();
int aIndex= 0;//升序列表从首位开始
int bIndex= bSize- 1;//降序列表从末尾开始
int aEl;
int bEl;
//循环终止条件为: a或者 b列表遍历完
while(aIndex< aSize&& bIndex>= 0){
aEl= a.get(aIndex);
bEl= b.get(bIndex);
if(aEl< bEl){
result.add(aEl);
aIndex++;
} else{
result.add(bEl);
bIndex--;
}
}
//将某个未遍历完的列表中的元素添加到结果(包括了任意一个列表为空列表的情况)
if(aIndex< aSize){
for(int i= aIndex; i< aSize; i++){
result.add(a.get(i));
}
}
else if(bIndex> 0){
for(int i= bIndex; i>= 0; i--){
result.add(b.get(i));
}
}
return result;
}
急..用JAVA语言实现数据结构实验!
发了我大半天时间专门帮你写的,注释没写仔细,有什么不明白的或者有什么小bebug就给我留言。
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
import java.util.Vector;
public class Test{
//I/O读取文件
public String getFile(String path){
StringBuffer context= new StringBuffer();
try{
BufferedReader br= new BufferedReader(new InputStreamReader(new FileInputStream(path)));
String temp= br.readLine();
while(temp!=null){
context.append(temp+"\n");
temp= br.readLine();
}
} catch(FileNotFoundException e){
// TODO Auto-generated catch block
e.printStackTrace();
} catch(IOException e){
// TODO Auto-generated catch block
e.printStackTrace();
}
return context.toString().toLowerCase();
}
//分割内容方法
public List mySplit(String context){
String[] words={};
List all= new ArrayList();
//按标点符号,分割内容的正则表达式
String regex="\\W";//[():,./'\"\n\r\f\\s-]
words= context.split(regex);
for(int i=0; i<words.length; i++){
if(!words[i].equals(""))//把空格去掉
all.add(words[i]);
}
return all;
}
//统计全部单词及其个数
public Hashtable contWords(List all){
//用于保存全部的单词及其个数
Hashtable allTable= new Hashtable();
for(int i=0; i<all.size(); i++){
//两个临时的变量,一个键一个值
String temp= all.get(i).toString();
int count= 0;
for(int j=0; j<all.size(); j++){
if(temp.equalsIgnoreCase(all.get(j).toString())){
count++;
}
}
allTable.put(temp, count);
}
return allTable;
}
//找出个数最多的那五个单词
public Hashtable findMax5(Hashtable allTable){
//用于保存结果的Hashtable
Hashtable result= new Hashtable();
Object[] keyToValue= allTable.entrySet().toArray();
Object[] values= allTable.values().toArray();
int[] v= new int[5];
for(int i=0; i<values.length; i++){
int value= Integer.parseInt(values[i].toString());
int min= findMin(v);
if(value>min){
for(int j=0; j<v.length; j++){
if(v[j]==min){
v[j]= value;
break;
}
}
}
}
//把v里面的无素从大到小排序一下
for(int i=0; i<v.length; i++){
for(int j=i+1; j<v.length; j++){
if(v[i]<v[j]){
int temp= v[i];
v[i]= v[j];
v[j]= temp;
}
}
}
for(int i=0; i<v.length; i++){
// System.out.println(v[i]);
for(int j=0; j<keyToValue.length; j++){
String ktv= keyToValue[j].toString();
int tv= Integer.parseInt(ktv.substring(ktv.indexOf("=")+1));
if(v[i]==tv){
//保证只取五个频率最高的单词
if(result.size()>=5) break;
String key= ktv.substring(0, ktv.indexOf("="));
result.put(key, v[i]);
}
}
}
return result;
}
//简单的查找数组中最小的那个数
public int findMin(int[] v){
for(int i=0; i<v.length-1; i++){
if(v[i]<v[i+1]){
int temp= v[i];
v[i]= v[i+1];
v[i+1]= temp;
}
}
return v[v.length-1];
}
//打印出结果
public static void printResult(Hashtable result){
System.out.println("排前五的单词情况如下:");
Enumeration e= result.keys();
Iterator it= result.values().iterator();
while(e.hasMoreElements()){
System.out.println(e.nextElement()+"的个数为:"+ it.next());
}
}
//main方法
public static void main(String[] args){
Test test= new Test();
String context= test.getFile("c:/test3.txt");
List all= test.mySplit(context);
Hashtable allTable= test.contWords(all);
Hashtable result= test.findMax5(allTable);
// System.out.println(result);
Test.printResult(result);
}
}
怎样学好java语言
怎样学好java语言?学习程序的最好方式是参照源代码,先仿照,后创新,慢慢有积累了,就可以收发自由了。没关系的,慢慢来,不可能一步到位的。java确实很难学.
学习Java其实应该上升到如何学习程序设计这种境界,其实学习程序设计又是接受一种编程思想。每一种语言的程序设计思想大同小异,只是一些由语言特性的而带来的细微差别比如Java中的Interface,你几乎在以前的学习中没有碰到过。以下我仔细给你说几点:
1。我们必须明确一个大方向,也就是说现在面向对象的编程范畴。尽管人工智能曾经有
所浪潮(看看Borland为什么有Turbo Prolog),但未来5-10年工业界广泛承认并接受的
将是面向对象式的编程。
2。工业界目前最流行的面向对象编程语言就是C++和Java。所以基本上锁定这两个方向就
可以了。而且完全可以同时掌握。
3。掌握Java的精华特性而且一定要知道为什么。比如,Interface和multi-thread。用
interface是更好的多继承的模型,而多线程则是设计到语言一级的重要特性。要完全理
解interface是为什么,用多线程又有几种常用的编程模型。
4。理解了语言的特性是为什么了之后,就可以试着上升到设计这个层次,毕竟学习语言
是要用的。目前比较好的开发模式是采用自定向下的面向对象的设计,加上MVC的模式(
你可以看一下我介绍的关于MVC的内容)。首先要找出最顶层的对象(这往往是最难的)
,然后一层一层往下递归,记住每次应符合7+/-2的原则,因为我们人的短记忆就是这样。一般有图形用户界面的应从界面开始设计。
5。有了基本设计模型后,可以学一些设计模式(Design Pattern)。这是目前证明很有效
的。比如体系结构模式(Layering分层,Pipe/Filter管道或过滤器),设计模式(有很
多,比如对象池Object Pool、缓冲池Cache等),编程模式(比如Copy-on-Write)。懂了这些模式之后,就会对系统的整体结构有很好的把握,而学术上也有倾向一个系统完全可以由各种模式组合而成。前面提到的MT实际上就有好几种模式,掌握后就不用自己花很多时间去试了。另外一个很重要的领域就是并行和分布式计算领域,大概有20种左右。
6。接下来就不能纸上谈兵了,最好的方法其实是实践。一般教科书上的例子并不能算是
实践,只能算是让你掌握语言特性用的。而提倡做实际的Project也不是太好,因为你还
没有熟练的能力去综合各种技术,这样只能是你自己越来越迷糊。我认为比较好的方法是
找一些比较经典的例子,每个例子比较集中一种编程思想而设计的,比如在我的实践当中,我曾经学习过一个很经典的例子就是用Java实现的HotDraw(源自SmallTalk),你可以用rolemodel或hotdraw在搜索引擎上找一下,我记不大清楚了。好象rolemodel.是个网站,上面有原代码和一些基本设计的文档。另一个来源可以到umlchina.是个不错的文档基地。从HotDraw上我学到了什么是 Framework,以及如何用rolemodel的方式来构造,这样我就可以应用到其他的地方。顺便说一句,这个例子你绝对不会觉得小,只会觉得大,并且他还是真正的商用的Framework。
7。结合前面学到的设计模式你就可以很好的理解这些经典的例子。并且自己可以用他来
实现一些简单的系统。如果可以对他进行进一步的修改,找出你觉得可以提高性能的地方
,加上自己的设计,那就更上一个层次了,也就会真正地感到有所收获。
8。好象以上谈的跟Java没什么关系,其实我们早就应该从单纯的学习语言到真正的学习
好编程的领域。学习技术是没有止境的,你学习第一种语言可能要半年时间,以后每种语
言都不应该超过两个月,否则你会觉得学习语言是包袱,是痛苦。
9。学习是为了用的,是为了让你的程序产生价值,把握住这个原则会比较轻松点。
我带了JAVA班以后,来学习的同学很多都是初学者,一部分是急着找工作的,一部分是很感兴趣的。他们都想在短短一两个星期内掌握,这是不切实际的。而且这样做很容易让自己心浮气燥,难以静下心来思考。
JAVA是比较热门,但我们自己不能头脑发热。我觉得所有初学者要学好JAVA或C或UNIX等任何一门计算机技术,一定要做到:
动手,动脑,动嘴,静心。
其中动手是最为重要的了。很多人学计算机技术就是看书、听课,当时是明白了,过后马上就忘记。如果不愿意敲键盘,就不如不学。即使有时候所敲的代码你不明白,可以先运行,看看结果,增加感性认识,然后上升到理性的认识。特别是在大家做考题的时候,很多东西,概念,你只要随便敲一个程序做做实验就能很深刻的理解,但很多人都是不愿意动手,这样的学习效率能高吗。
动脑,动嘴,就是要多想问题,多思考,有不懂的问题就大声说出来。很多人一是不动脑筋想问题,也就提不出问题。还有一些人怕自己提出的问题傻,怕人笑话。其实IT行业技术面很广,工作了5、6年的人说出一些傻话来也是正常的。
然后静心很重要。现在社会很浮躁,IT行业更浮躁,这种心态是学不好东西的。学会了基本的东西,高级的内容才容易掌握,否则就是本末倒置。当然有些人情况特殊,急着工作,那去学很多人JAVA做了几年了,连多态,线程都没搞明白。
JAVA中,有些概念不好理解怎么办,有学生说我就是不理解线程是怎么回事。我觉得理解是需要时间的,一下不能理解,多看看,甚至多背几遍就理解了。读书千遍,其义自见,现在也管用。而且我觉得初学时候要不求甚解,多做,多敲代码。等你做的足够多的时候,见多识广的时候,概念,理论的东西就很容易理解了。
JAVA的精华就在面向对象思想,好比指针是C语言的精华一样,多花点心思就能掌握。
书遍地都是。基础先打牢,之后去看spring和java的源码。都能理解了,你就可以了。
怎样学好数据结构(java语言描述)?不难多看书多理解还要亲自去谢谢程序实现链表数等数据结构等等~慢慢会学好的
没有接触过编程的人,怎样学好JAVA语言我学习Java语言也很久了,虽然算不上是高手,但也能有点自己的发言权,我个人觉得:
1、不要先直接学习Java语言,Java的强大能够让你忽略程序设计的本质,面向对象的开发理念其实不适合初学者,建议你先学习C语言,熟悉变量的分配、内存的管理和几种基本的控制语句,熟悉面向过程的程序设计能够让你对计算的执行流程有个概念,一开始就接触面向对象不利于你对计算机系统的理解。
2、我个人觉得Java很强大的一点在于其异常丰富的类库,譬如集合类,所以你得通过不断地练习去学会这些常用类库的使用。
3、其实最重要的还是你的程序设计思想本身,语言的机制本身并不会给程序带来多大的影响。
4、关于书本的问题,有些人不推荐Thinking in Java,说不适合初学者。的确看这本书很头痛,但是你会学到很多深入的东西,譬如最简单的String类,一般的书只会跟你说怎么用,但是Thinking会告诉你为什么String特殊,以及怎样合理的使用String,Javac编译器会怎样优化代码中的String,以及String“不可更改”的本质;还有在介绍IO流的时候,一般的书只会告诉你几个用法,但是不会告诉你为什么要采用这种“嵌套”的方式·····
5、你的学会正确看待Java,他只是一种语言,仅此而已,基本的控制结构什么的,所有的语言都差不多
其名称 SR是 Synchronizing Resources(同步资源)的首字母缩略词,是一种并行编程语言。
怎么学好java语言这个怎么说呢,真正学好一门语言的话是有好多事情要做的,java还是比较好学的入门比较容易,比C++容易多了,java中没有指针,也不能说没有指针,只是把指针封装隐藏起来了而已,所以简单多了,学好java的话,基础必须要学扎实,然后的话多看一下人家写的程序,学习人家是怎么写的,代码的规范性、算法等等。还有最重要的是就是要多练,这是成为一名合格程序员所必须要做的,天天写代码,熟能生巧。祝你成功!
怎样去学习java?如何把java语言学好?首先先搞懂JavaSE的部分,Swing和swt部分就可以少看或不看,因为现在用的比较少。重点是看懂Java中的面向对象、集合框架、JDBC、异常、IO、线程和网络编程。JavaSE搞定后再学习Servlet、JSP,然后才是经典的Struts2、Hibernate和Spring,学习框架时重点理解框架的运行原理,甚至可以尝试自己写个轻量级的框架。理解运行原理的最好方法就是阅读源代码,还是要感谢Java中的开源项目。这期间还要多找各种大小的项目去完成,不一定要大,但是要精致,功能要完整,这样可以练习所学知识,并且可以在做项目中发现自己的知识体系中不足的地方。关于看视频,我不推荐,很多同学一天到晚就知道看视频,殊不知,编程真理在于“练习,练习,不停练习”!
再补充下:当学习Java的期间,会碰到各种各样的异常,请积累这些异常信息,以及如何出现的异常和如何处理的,因为java中常见的异常就那么几种,积累的多了,处理问题的能力就提高,这样水平会提高的很快!
学好Java语言多久看你基础了,如果是有语言基础,比如你学过C语言,可以说java上手很快,2个月足矣,我说的学好是指能找到工作的那种;如果你是零基础,一般需要4个月左右,能找到一份实习或者类似于应届生的工作,这一行主要看工作经验,毕竟工作时间越长,会的就越多。
怎样学好CY语言万丈高楼平地起,不管学什么,都没有速成的,都是从一点一滴学起的,首先你要学基础,可以去买一本谭浩强编写的C语言的书,当然,你不可能一下子就能看懂.看完后你再可以去网上看视频教程..还有.你电脑要装一个编译器,自己可以试着多写代码..多看代码..慢慢来,我祝贺你一定能把C语言学好的.C语言是一切编程的基础.祝你早日学好C语言.
我已经大一了,已经学了C语言,怎样学好JAVA语言呀?详细谈谈哦! C语言学是学了。但我也知道还没到半个程序员的程度。。只是学了基本的,java至多到大二第二个学期就会开,要是真的想学好,就深入些,别只是停在皮毛
OK,本文到此结束,希望对大家有所帮助。