AP计算机科学A:列表

学习AP计算机科学A的概念,示例问题和解释

大学导师应用商店 大学导师安卓商店

例子问题

例子问题1:列表

考虑下面的代码:

my哲人= new ArrayList();

myPhilosophers.add(“弗雷格”);

myPhilosophers.add(“胡塞尔”);

myPhilosophers.add(“黑格尔”);

myPhilosophers.add(“法案”);

myPhilosophers.add(弗雷德里克);

For (int I = 0;i < myPhilosophers.size();我+ +){

字符串s = myPhilosophers.get(i);

if(s.charAt(0) >= 'H' || . charat (3) < 'd') {

myPhilosophers。(我,s.toUpperCase ());

System.out.println (myPhilosophers);

上面代码的输出是什么?

可能的答案:

[弗雷格,胡塞尔,黑格尔,比尔,弗雷德里克]

[弗雷格,胡塞尔,黑格尔,比尔,弗雷德里克]

[弗雷格,胡塞尔,黑格尔,比尔,弗雷德里克]

[弗雷格,胡塞尔,黑格尔,比尔,弗雷德里克]

[弗雷格,胡塞尔,黑格尔,比尔,弗雷德里克]

正确答案:

[弗雷格,胡塞尔,黑格尔,比尔,弗雷德里克]

解释

考虑循环中的逻辑。if语句将被到达,如果你:

  1. 第一个角色是什么H或者在字母表后面(用大写字母)。
  2. 是否有第四个字符小于d

第一个例子适用于“胡塞尔”和“黑格尔”。然而,第二条不适用于任何人——甚至不适用于“弗雷德里克”,因为d平等的d,不少于它!

例子问题1:列表

考虑下面的代码:

String [] db ={“哈维”、“普鲁塔克”,“弗雷格”,“Radulphus”};

ArrayList names = new ArrayList();

For (int I = 0;I < 12;我+ +){

的名字。添加(db[i % db.length]);

For (int I = 0;I < 12;我+ +){

如果(names.get (i) .equals(“弗雷格”)){

names.remove(我);

上面的代码有什么bug ?

可能的答案:

该列表将耗尽机器上的所有内存。

没有虫子。

. get方法有bug并且可能崩溃。最好使用迭代器

在这两个循环中有一个无限循环。

该列表将在第二个循环中超过其索引。

正确答案:

该列表将在第二个循环中超过其索引。

解释

在第二个循环中,当您删除其中一个项时,您将ArrayList少了一个元素。这意味着,如果你试图遍历索引11,你将在某个时刻收到一个错误,因为列表将“缩小”。这类似于数组越界错误,尽管它将是IndexOutOfBoundsException异常。

示例问题11:常用数据结构

考虑以下代码:

公共静态类

私双半径;

公共圆(双r) {

半径= r;

public double getArea() {

返回半径*半径* Math.PI

public static void main(字符串[]args) {

ArrayList circles = new ArrayList();

For (int I = 0;I < 10;我+ +){

圆圈。添加(new Circle(i + 4 * 2));

下列哪项表示遍历列表的代码以输出其中包含的圆的面积?

可能的答案:

For (int I = 0;I < circles.length;我+ +){

System.out.println(圈[我].getArea ());

For (int I = 0;I < circles.size();我+ +){

System.out.println(圈[我].getArea ());

For (int I = 0;I < circles.size();我+ +){

.getArea System.out.println(圈[我]. get () ());

For (int I = 0;I < circles.size;我+ +){

System.out.println (circles.get()[我].getArea ());

For (int I = 0;I < circles.size();我+ +){

System.out.println (circles.get (i) .getArea ());

正确答案:

For (int I = 0;I < circles.size();我+ +){

System.out.println (circles.get (i) .getArea ());

解释

在这些答案中,只需要考虑两个问题。一方面,看一下循环控件语句。它是关于:

circle.size ()

而且

circles.length

列表类型,您需要使用方法尺寸()长度(用于数组)。类中提取元素的一种方法ArrayList类型是使用. get方法。你必须用这个而不是括号[]用于数组。

例子问题2:列表

下列哪一个不是数组列表的有效声明?

可能的答案:

ArrayList list = new ArrayList();

ArrayList list = new ArrayList();

List List = new ArrayList();

List List = new ArrayList();

ArrayList list = new ArrayList();

正确答案:

ArrayList list = new ArrayList();

解释

数组列表是对象的列表,因此不能存储基本类型。如果希望在ArrayList中存储基元类型,则必须使用Double或Integer等容器对象。对象引用类型List是ArrayList对象的有效引用类型。

例子问题1:列表

下面哪个是数组类和数组列表类在Java中的区别?

可能的答案:

数组可以存储原语和对象,而数组列表只能存储对象。

您必须通过调用类似于My_array [some_number] = some_value.对于数组列表,你使用add ()方法。

数组在创建时有固定的大小,而数组列表可以根据需要增长。

所有其他的答案选择都是Java中数组和数组列表之间的区别。

要查找数组中点的数量,需要添加长处坚持到底。要查找数组列表中的点的数量,可以使用尺寸()方法。

正确答案:

所有其他的答案选择都是Java中数组和数组列表之间的区别。

解释

在Java中,Array是一个固定长度的数据结构,而ArrayList是一个可变长度的Collection Class(其他Collection类成员包括HashMap和HashSet)。这意味着数组一旦创建就不能改变它的大小;必须制造一个全新的阵列。数组列表可以随意改变大小。

数组可以引用这两个原语(如int)和类型(比如整数).数组列表只能引用类型,不能引用原语。通过一个叫做"Autoboxing"的方法,可以看到数组列表存储了一个原语,但它真正做的是自动用它所喜欢的类型屏蔽原语,以便它与数组列表一起工作。

在创建数组期间,长处值被赋值,所以每当您添加长处到数组的末尾,就得到了长度(对于给定的数组,它永远不会改变)。对于数组列表,使用.size ()函数,它返回数组列表的长度。因为ArrayList的大小是可变的,所以它是一个函数(这就是为什么括号在末尾)。

Java为数组列表提供了add()函数,顾名思义,它将参数添加到数组列表中。另一方面,数组没有添加元素的函数。要向数组中添加一些东西,你可以调用类似这样的命令:

Int [] my_array = new Int [10];
My_array [0] = 5;

问题91:标准数据结构

编写一个程序,遍历该数据结构并输出数据(选择最佳答案):

List> listOflistOfStrings = new ArrayList>();

可能的答案:

for (List l: listOflistOfStrings) {

List listOfStrings = l;

for (List s: l) {

System.out.println(年代);

for (List l: listOflistOfStrings) {

List listOfStrings = l;

for(字符串s: l) {

System.out.println(年代);

For (int I = 0;i < listOflistOfStrings.size();我+ +){

List listOfStrings = listOflistOfStrings.get(i);

For (int j = 0;j < listOflistOfStrings.size();j + +) {

System.out.println (listOfStrings.get (j));

For (int I = 0;i < listOflistOfStrings.size();我+ +){

List listOfStrings = listOflistOfStrings.get(i);

For (int j = 0;j < listOfStrings.size();j + +) {

System.out.println (listOfStrings.get (j));

正确答案:

for (List l: listOflistOfStrings) {

List listOfStrings = l;

for(字符串s: l) {

System.out.println(年代);

解释

正确答案使用ForEach循环。推荐使用ForEach循环遍历list,因为list包含迭代器。ForEach循环使用迭代器遍历List。其中一个答案使用了常规的For循环,虽然答案是正确的,但这不是最佳选择。

大学导师的学习工具