用Java写一个用c语言写顺序表的无序表的类,至少含8个操作。

以下试题来自:
单项选择题在Java中,一个类可同时定义许多同名的方法,这些方法的形式参数的个数、类型或顺序各不相同,传回的值也可以不相同。这种面向对象程序特性称为
)A.隐藏B.重写C.重载D.Java不支持此特性
为您推荐的考试题库
你可能感兴趣的试题
1A.i=x;B.x=u+y;C.x=23.4+j*y;D.v=(inx;2A.一个线程是一个Thread类的实例B.线程从传递给线程的Runnable实例的run()方法开始执行C.线程操作的数据来自Runnable实例D.新建的线程调用start()方法就能立即进入运行状态3A.栈是非线性结构B.栈是一种树状结构C.栈具有先进先出的特征D.栈具有后进先出的特征4A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca5A.ArrayList myList=new Object();B.List myList=new ArrayList();C.ArrayList myList=new List();D.List myList=new List();
热门相关试卷
最新相关试卷博客分类:
我们经常会用到各种集合,数字的,字符串的还有对象的。它们无处不在,哪怕操作集合的代码要能稍微优化一点,都能让代码清晰很多。在这章中,我们探索下如何使用lambda表达式来操作集合。我们用它来遍历集合,把集合转化成新的集合,从集合中删除元素,把集合进行合并。
遍历列表是最基本的一个集合操作,这么多年来,它的操作也发生了一些变化。我们使用一个遍历名字的小例子,从最古老的版本介绍到现在最优雅的版本。
用下面的代码我们很容易创建一个不可变的名字的列表:
final List&String& friends =
Arrays.asList("Brian", "Nate", "Neal", "Raju", "Sara", "Scott");
System.out.println(friends.get(i));
下面这是最常见的一种遍历列表并打印的方法,虽然也最一般:
for(int i = 0; i & friends.size(); i++) {
System.out.println(friends.get(i));
我把这种方式叫做自虐型写法——又啰嗦又容易出错。我们得停下来好好想想,"是i&还是i&=呢?"这只有当我们需要操作具体某个元素的时候才有意义,不过即便这样,我们还可以使用坚持不可变原则的函数式风格来实现,这个我们很快会讨论到。
Java还提供了一种相对先进的for结构。
collections/fpij/Iteration.java
for(String name : friends) {
System.out.println(name);
在底层,这种方式的迭代是使用Iterator接口来实现的,调用了它的hasNext和next方法。 这两种方式都属于外部迭代器,它们把如何做和想做什么揉到了一起。我们显式的控制迭代,告诉它从哪开始到哪结束;第二个版本则在底层通过Iterator的方法来做这些。显式的操作下,还可以用break和continue语句来控制迭代。 第二个版本比第一个少了点东西。如果我们不打算修改集合的某个元素的话,它的方式比第一个要好。不过这两种方式都是命令式的,在现在的Java中应该摒弃这种方式。 改成函数式原因有这几个:
for循环本身是串行的,很难进行并行化。
这样的循环是非多态的;所得即所求。我们直接把集合传给for循环,而不是在集合上调用一个方法(支持多态)来执行特定的操作。
从设计层面来说,这样 写的代码违反了“Tell,Don't Ask”的原则 。我们请求执行一次迭代,而不是把迭代留给底层库来执行。
是时候从老的命令式编程转换到更优雅的内部迭代器的函数式编程了。使用内部迭代器后我们把很多具体操作都扔给了底层方法库来执行,你可以更专注于具体的业务需求。底层的函数会负责进行迭代的。我们先用一个内部迭代器来枚举一下名字列表。
Iterable接口在JDK8中得到加强,它有一个专门的名字叫forEach,它接收一个Comsumer类型的参数。如名字所说,Consumer的实例正是通过它的accept方法消费传递给它的对象的。我们用一个很熟悉的匿名内部类的语法来使用下这个forEach方法:
friends.forEach(new Consumer&String&() { public void accept(final String name) {
System.out.println(name); }
我们调用了friends集合上的forEach方法,给它传递了一个Consumer的匿名实现。这个forEach方法从对集合中的每一个元素调用传入的Consumer的accept方法,让它来处理这个元素。在这个示例中我们只是打印了一下它的值,也就是这个名字。 我们来看下这个版本的输出结果,和上两个的结果 是一样的:
我们只改了一个地方:我们抛弃了过时的 for循环,使用了新的内部迭代器。好处是,我们不用指定如何迭代这个集合,可以更专注于如何处理每一个元素。缺点是,代码看起来更啰嗦了——这简直要把新的编码风格带来的喜悦冲的一干二净了。所幸的是,这个很容易改掉,这正是lambda表达式和新的编译器的威力大展身手的时候了。我们再做一点修改,把匿名内部类换成lambda表达式。
friends.forEach((final String name) -& System.out.println(name));
这样看起来就好多了。代码更少了,不过我们先来看下这是什么意思。这个forEach方法是一个高阶函数,它接收一个lambda表达式或者代码块,来对列表中的元素进行操作。在每次调用的时候 ,集合中的元素会绑定到name这个变量上。底层库托管了lambda表达式调用的活。它可以决定延迟表达式的执行,如果合适的话还可以进行并行计算。 这个版本的输出也和前面的一样。
内部迭代器的版本更为简洁。而且,使用它的话我们可以更专注每个元素的处理操作,而不是怎么去遍历——这可是声明式的。
不过这个版本还有缺陷。一旦forEach方法开始执行了,不像别的两个版本,我们没法跳出这个迭代。(当然有别的方法能搞定这个)。因此,这种写法在需要对集合里的每个元素处理的时候比较常用。后面我们会介绍到一些别的函数可以让我们控制循环的过程。
lambda表达式的标准语法,是把参数放到()里面,提供类型信息并使用逗号分隔参数。Java编译器为了解放我们,还能自动进行类型推导。不写类型当然更方便了,工作少了,世界也清静了。下面是上一个版本去掉了参数类型之后的:
friends.forEach((name) -& System.out.println(name));
在这个例子里,Java编译器通过上下文分析,知道name的类型是String。它查看被调用方法forEach的签名,然后分析参数里的这个函数式接口。接着它会分析这个接口里的抽象方法,查看参数的个数及类型。即便这个lambda表达式接收多个参数,我们也一样能进行类型推导,不过这样的话所有参数都不能带参数类型;在lambda表达式中,参数类型要么全不写,要写的话就得全写。
Java编译器对单个参数的lambda表达式会进行特殊处理:如果你想进行类型推导的话,参数两边的括号可以省略掉。
friends.forEach(name -& System.out.println(name));
这里有一点小警告:进行类型推导的参数不是final类型的。在前面显式声明类型例子中,我们同时也把参数标记为final的。这样能防止你在lambda表达式中修改参数的值。通常来说,修改参数的值是个坏习惯,这样容易引起BUG,因此标记成final是个好习惯。不幸的是,如果我们想使用类型推导的话,我们就得自己遵守规则不要修改参数,因为编译器可不再为我们保驾护航了。
走到这步可费了老劲了,现在代码量确实少了一点。不过这还不算最简。我们来体验下最后这个极简版的。
friends.forEach(System.out::println);
在上面的代码中我们用到了一个方法引用。我们用方法名就可以直接替换整个的代码了。在下节中我们会深入探讨下这个,不过现在我们先来回忆下Antoine de Saint-Exupéry的一句名言:完美不是无法再增添加什么,而是无法再去掉什么。
lambda表达式让我们能够简洁明了的进行集合的遍历。下一节我们会讲到它如何使我们在进行删除操作和集合转化的时候,也能够写出如此简洁的代码。
浏览 21603
somefuture
浏览: 550358 次
来自: 上海
请问,对于自定义的登录页面,我的ajax请求方式该怎么写呢,是 ...
翻译的内容在哪里?
关键是这有啥用?
我用的比较传统的方法,就是写一个supportDao的类,把基 ...
&div class=&quote_title ...import java.util.S
class DATA{ //模拟一个班级的学生记录
class SLType{
static final int MAXLEN = 100;
DATA[] ListData = new DATA[MAXLEN+1];
//顺序表已存结点的数量
void SLInit(SLType sl){
sl.ListLen = 0;
int SLLength(SLType sl){
return (sl.ListLen);
//插入节点
int SLInsert(SLType SL,int n , DATA data){
if(SL.ListLen&=MAXLEN){
System.out.println("顺序表已满,不能插入节点");
if(n&1 || n&SL.ListLen-1){
System.out.println("插入序号有误,不能插入节点");
//将顺序表中的数据向后移动
for(i = SL.ListL i &= i--){
SL.ListData[i+1] = SL.ListData[i];
SL.ListData[n] =
SL.ListLen++;
//追加节点
int SLAdd(SLType SL,DATA data){
if(SL.ListLen&=MAXLEN){
System.out.println("顺序表已满,不能插入节点");
SL.ListData[++SL.ListLen]=
//删除节点
int SLDelete(SLType SL,int n ){
if(n&1||n&SL.ListLen+1){
System.out.println("序号输入有误,不能插入节点");
for(i = i&SL.ListLi++){
SL.ListData[i] = SL.ListData[i+1];
SL.ListLen--;
//查找节点
DATA SLFindByNum(SLType SL,int n){
if(n&1||n&SL.ListLen+1){
System.out.println("序号输入有误,不能插入节点");
return SL.ListData[n];
//按照关键字查找节点
int SLFindByCont(SLType SL,String key){
for(i = 1; i &= SL.ListL i++){
if(SL.ListData[i].pareTo(key)==0){
//显示所有节点
int SLAll(SLType SL){
for(i = 1; i &=SL.ListL i++){
System.out.println(SL.ListData[i].key+"#"+SL.ListData[i].name+"#"+SL.ListData[i].age);
public class SequentialList {
public static void main(String[] args) {
SLType SL=new SLType();
//定义顺序表变量
DATA data=new DATA();
//定义结点保存数据类型变量
//定义结点保存指针变量
//保存关键字
System.out.print("顺序表操作演示!\n");
SL.SLInit(SL);
//初始化顺序表
System.out.print("初始化顺序表完成!\n");
Scanner input=new Scanner(System.in);
//循环添加结点数据
System.out.print("输入添加的结点(学号 姓名 年龄):");
DATA data=new DATA();
data.key=input.next();
data.name=input.next();
data.age=input.nextInt();
if(data.age!=0)
//若年龄不为0
if(SL.SLAdd(SL,data)==0)
//若添加结点失败
//退出死循环
//若年龄为0
//退出死循环
}while(true);
System.out.print("\n顺序表中的结点顺序为:\n");
SL.SLAll(SL);
//显示所有结点数据
System.out.print("\n要取出结点的序号:");
i=input.nextInt();
//输入结占点序号
pdata=SL.SLFindByNum(SL,i);
//按序号查找结点
if(pdata!=null)
//若返回的结点指针不为NULL
System.out.printf("第%d个结点为:(%s,%s,%d)\n",i,pdata.key,pdata.name,pdata.age);
System.out.print("\n要查找结点的关键字:");
key=input.next();
//输入关键字
i=SL.SLFindByCont(SL,key);
//按关键字查找 ,返回结点序号
pdata=SL.SLFindByNum(SL,i);
//按序号查询,返回结点指针
if(pdata!=null)
//若结点指针不为NULL
System.out.printf("第%d个结点为:(%s,%s,%d)\n",i,pdata.key,pdata.name,pdata.age);
阅读(...) 评论()117.下面有关方法覆盖说法不正确的是:(B);A.方法覆盖要求覆盖和被覆盖的方法有相同的名字,;B.方法覆盖要求覆盖和被覆盖的方法必须具有相同的;C.覆盖的方法不能比被覆盖的方法抛出更多的异常;D.覆盖的方法一定不能是private的;118.一个Java程序运行从上到下的环境次序是;A.操作系统、Java程序、JRE/JVM、硬件;B.JRE/JVM、J
117.下面有关方法覆盖说法不正确的是:(B)
A. 方法覆盖要求覆盖和被覆盖的方法有相同的名字,参数列以及返回值
B. 方法覆盖要求覆盖和被覆盖的方法必须具有相同的访问权限;
C. 覆盖的方法不能比被覆盖的方法抛出更多的异常
D. 覆盖的方法一定不能是private的
118.一个Java程序运行从上到下的环境次序是(C)
A. 操作系统、Java程序、JRE/JVM、硬件
B. JRE/JVM、Java程序、硬件、操作系统
C. Java程序、JRE/JVM、操作系统、硬件
D. Java程序、操作系统、JRE/JVM、硬件
119 下面选项中哪个关键字可以用来修饰接口中的变量和方法?(A)
B. private
C. synchronized D. protected
120. 下面代码段中:(A)
String String=”String”;
//String 可以做变量名
System.out.println(String);
C. 编译出错 D. 运行出错
121. 下面哪种是正确的创建Map集合的方式:(D)
A. Map m=new Map();
B. Map m=new Map(init capacity, increment capacity);
C. Map m=new Map(new Collection());
D. Map是接口,所以不能实例化。
122.关于被私有保护访问控制符protected修饰的成员变量,以下说法正确的是? (A)
A.可以被三种类所引用:该类自身、与它在同一个包中的其他类、在其他包中的该类的子类
B. 可以被两种类访问和引用:该类本身、该类的所有子类
C. 只能被该类自身所访问和修改
D.只能被同一个包中的类访问
123.对于构造方法,下列叙述正确的是:(A)
A. 构造方法的方法名必须与类名相同;
B. 构造方法必须用void申明返回类型 (没有返回类型)
C. 构造方法可以与类名不同
D. 若编程人员没再类中定义构造方法,程序将报错。
124.为了区分类中重载的同名的不同的方法,要求:(A)
A. 采用不同的形式参数列表
B. 返回值得数据类型不同 (与返回值无关)
C. 调用时用类名或者对象名做前缀
D. 参数名不同 (参数列表---参数个数,参数类型)
125.下面是有关子类继承父类构造函数的描述,其中正确的是:(C)
A. 创建子类的对象时,先调用子类自己的构造函数,然后调用父类的构造函数。 (先调用父类的构造函数)
B. 子类可以不调用父类的构造函数(子类的构造函数默能调用父类的无参数的构造函数)
C. 子类必须通过super()关键字调用父类的构造函数
D. 子类无法继承父类的构造函数。 (同上)
126. 下列说法中,正确的是:(A)
A. 类是变量和方法的集合体
B. 数组是无序数据的集合 (类型(type)可以为Java中任意的数据类型,包括简单类型组合类型)
C. 抽象类可以实例化
D. 类成员数据必须是公有的
127.下列不可作为java语言标识符的是(D)
D) 11(不能以数字开头)
128.有一段java 应用程序,它的主类名是a1,那么保存它的源文件名可以是(A)
A) a1.java
B) a1.class
129.整型数据类型中,需要内存空间最少的是(D)
A) short (2个字节)
B) long(8个字节)
C) int (4个字节)
(1个字节)
130.在创建对象时必须(C)
A) 先声明对象,然后才能使用对象
B) 先声明对象,为对象分配内存空间,然后才能使用对象
C) 先声明对象,为对象分配内存空间,对对象初始化,然后才能使用对象
D) 上述说法都对
131.在调用方法时,若要使方法改变实参的值,可以(B)
A) 用基本数据类型作为参数
B) 用对象作为参数
C) A和B都对
D) A和B都不对
132. Java中(C)
A) 一个子类可以有多个父类,一个父类也可以有多个子类 (只可以单继承)
B) 一个子类可以有多个父类,但一个父类只可以有一个子类
C) 一个子类可以有一个父类,但一个父类可以有多个子类
D) 上述说法都不对
133. Character流与Byte流的区别是(C)
A) 每次读入的字节数不同
B) 前者带有缓冲,后者没有
C) 前者是字符读写,后者是字节读写
D) 二者没有区别,可以互换使用
134.以下声明合法的是(
A、default
D、abstract
hyperbolicCosine( ) ;
类Test1定义如下: 1.public
aMethod(float
将以下哪种方法插入行3是不合法的。(
aMethod(float
aMethod(float
c,float d){
aMethod(int
a, int b){
D、private float aMethod(int a,int b,int c){
类Test1、Test2定义如下:
2.{ public
aMethod(float a,float b) throws
IOException {
5. public
将以下哪种方法插入行6是不合法的。(
aMethod(float
aMethod(int a,int b)throws
Exception{ }
aMethod(float
p,float q){ }
aMethod(int a,int
b)throws IOException{ }
关于以下程序段,正确的说法是(
s1=”abc”+”def”;
String(s1);
if(s1= =s2)
System.out.println(“= = succeeded”);
if (s1.equals(s2))
System.out.println(“.equals()
succeeded”);
A、行4与行6都将执行
B、行4执行,行6不执行
C、行6执行,行4不执行
C、行4、行6都不执行
Java application中的主类需包含main方法,main方法的返回类型是什么?( D )
以下标识符中哪项是不合法的(
B、$double
D、BigMeaninglessName
( const和goto是Java的保留的关键字,不可做标识符)
以下关于构造函数的描述错误的是(
A、构造函数的返回类型只能是void型。(构造函数没有返回类型)
B、构造函数是类的一种特殊函数,它的方法名必须与类名相同。
C、构造函数的主要作用是完成对类的对象的初始化工作。
D、一般在创建新对象时,系统会自动调用构造函数。
141. 下列哪些语句关于Java内存回收的说明是正确的? (
A、程序员必须创建一个线程来释放内存
B、内存回收程序负责释放无用内存
C、内存回收程序允许程序员直接释放内存 (垃圾回收站自动回收,释放)
D、内存回收程序可以在指定的时间释放内存对象
有以下程序片段,下列哪个选项不能插入到行1。(
Interesting{
3.//do sth
(只能有一个public修饰的class)
A、import java.awt.*;
C、class OtherClass{
D、public class MyClass{ }
143. 下面哪个函数是public void
aMethod(){...}的重载函数?(
aMethod( ){...}
B、public int
aMethod(){...}
C、public void
aMethod ( ){...}
D、public int
aMethod ( int m){...}
(重载:定义同名的方法,方法的形式参数个数、类型或顺序各不相同,传回的值也可以不相同)
A派生出子类B,B派生出子类C,并且在Java源代码中有如下声明:
问以下哪个说法是正确的? (
A、只有第1行能通过编译
B、第1、2行能通过编译,但第3行编译出错
C、第1、2、3行能通过编译,但第2、3行运行时出错
D、第1行、第2行和第3行的声明都是正确的
(A是B的父类,也算是C的父类)
假设A类有如下定义,设a是A类的一个实例,下列语句调用哪个是错误的?(
method1() {
A、System.out.println(a.i);B、a.method1();
C、A.method1();
D、A.method2()
有如下代码段:
2) { if(unsafe()){//do something?}
3) else if(safe()){//do the other?}
其中,方法unsafe() 将抛出IOException, 请问可将以下哪项填入第1行?(
A、 public IOException methodName()
B、 public void methodName()
C、public void methodName() throw
IOException
D、public void methodName() throws
IOException
147. Java的字符类型采用的是Unicode编码方案,每个Unicode码占用(
B )个比特位。
给出下面代码,关于该程序以下哪个说法是正确的?(
public class Person{
三亿文库包含各类专业文献、幼儿教育、小学教育、外语学习资料、行业资料、生活休闲娱乐、java笔试题12769等内容。 
 精选30 道 Java 笔试题解答 1、 一个&.java&源文件中是否可以包括多个类(...的整数为例,它用 1 个字节进 行存储,表示的最大数值范围为-128 到+127。...  java基础笔试题(答案已整理)_计算机软件及应用_IT/计算机_专业资料。java基础面试题,附答案,基本上都问这些。Java 基础试题一:选择题(1*30=30) (题目写在答题...  java笔试题基础知识(二)_IT认证_资格考试/认证_教育专区。1.String s = &Hello&;s = s + & world!&; 这两行代码执行后,原始的String对象中的内容到底变...  十个最常见的经典Java基础面试、笔试题_IT认证_资格考试/认证_教育专区。基础...类型的整数为例,它用 1 个字节进行存储,表示的最大数值 范围为-128 到+127...  Java笔试面试题_计算机软件及应用_IT/计算机_专业资料。Java笔试面试题 ...//因为 byte 的范围是:-128 到 127。 //而 130 不在此范围内,所以报错...  java笔试题基础知识(四)_IT认证_资格考试/认证_教育专区。1、说出一些常用的类,包,接口,请各举 5 个 要让人家感觉你对 JavaEE 开发很熟,所以,不能仅仅只列...  _JAVA笔试题_IT认证_资格考试/认证_教育专区。JAVA 笔试测试题一、选择题 1、 你编择一个定义了 5 个类和 18 个方法的 java 源文件。请问,当你编择盖源文...  java开发笔试题_计算机软件及应用_IT/计算机_专业资料。java笔试题一套,供大家参考...对 static 方法的调用不需要类实例 C.socket 类在 java.lang 中 D.127.0....}

我要回帖

更多关于 填写电磁的动作顺序表 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信