加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

容器作业

发布时间:2020-12-14 06:33:21 所属栏目:Java 来源:网络整理
导读:p align="center" 容器作业 p class="1" 一、??? 填空题 Java集合框架提供了一套性能优良、使用方便的接口和类,包括Collection和Map两大类,它们都位于 包中 队列和堆栈有些相似,不同之处在于 。 结构是一种由多个节点组成的线性数据结构,并且每个节点包

<p align="center">容器作业


<p class="1">一、??? 填空题

  1. Java集合框架提供了一套性能优良、使用方便的接口和类,包括Collection和Map两大类,它们都位于包中
  2. 队列和堆栈有些相似,不同之处在于
  3. 结构是一种由多个节点组成的线性数据结构,并且每个节点包含有数据以及指向下一个节点的引用。
  4. ____LinkedList__________是一种集合类,它?采用链表作为的存储结构,便于删除和添加元素,但是按照索引查询元素效率低下。
  5. 是一种Collection类型的集合类,其中元素唯一,并采用二叉树作为存储结构,元素按照自然顺序排列。
  6. 如果希望将自定义类Student的多个对象放入集合TreeSet,实现所有元素按照某个属性的自然顺序排列,则需要Student类实现_________接口。
  7. 在Java中集合的访问时间接近稳定,它是一种键值对映射的数据结构。这个数据结构是通过数组来实现的。
  8. 迭代器Iterator为集合而生,专门实现集合遍历,该接口有三个方法,分别是hasNext() 、_______、remove()。

二、??? 选择题

1.

以下选项中关于Java集合的说法错误的是( AC?? 。(选择二项)

A.

B.

C.

D.

?

2.

如下Java代码,输出的运行结果是(? A? )。(选择一项)

?

public class Test {

public static void main(String[ ] args) {

list=new ArrayList();

out.println(s);

A

运行时出现异常

B.

C.

正确运行,输出str2

D.

编译时出现异常

?

3.

以下Java代码的作用是首先将一个数组的内容存入集合,然后判断集合中是否有指定的元素存在,其中共有(??? )处错误。(选择一项)

?

import java.util.List;

public class Test {

public int getIndexofArray(float[] f){

int rtn=-1;

float objf=3.4;

null;

for(int i=0;i

for(int i=0;i

float tmp=(float)list.get(i);

if(objf==tmp){

return rtn;

A

B.

C.

2

D.

3

?

4.

分析如下Java 代码,编译运行后将输出( B? ?)。(选择一项)

?

public class Test {

public Test() {

static void print(List al) {

new ArrayList();

public static void main(String[] args) {

al = new ArrayList();

print(al);

out.println(al.get(1));

A

1

B.

C.

3

D.

4

?

5.

Java,下列集合类型可以存储无序、不重复的数据的是(? D? )。(选择一项)

A

ArrayList

B.

C.

TreeSet

D.

HashSet

?

6.

以下代码的执行结果是( C ??)。(选择一项)

?

s=new HashSet();

out.println(s.size());

A.

B.

C.

D.

?

7.

给定如下Java代码,编译运行的结果是( C?? )。(选择一项)

?

public class Test {

public static void main(String[] args) {

map = new HashMap();

out.println(map.size());

}

A

编译时发生错误

B.

C.

正确运行,输出:1

D.

正确运行,输出:2

?

8.

下面集合类中属于非线程安全,且结构采用了哈希表的是(? C ?。(选择一项)

A.

B.

C.

D.

?

9.

?

Java中,LinkedList类与ArrayList类同属于集合框架类,下列( CD?? )选项中是LinkedList类有而ArrayList类没有的方法。(选择两项)

A

add(Object o)

B.

C.

getFirst()

D.

removeLast()

三、??? 判断题

  1. 数组和集合中的元素可以是任何数据类型,包括基本类型和引用类型。(? F )
  2. Java集合中的Set接口和List接口都是从Collection接口派生出来的。(?? T )
  3. Collection 接口存储一组不唯一,有序的对象,它有两个子接口:List和Set。(? F? )
  4. Collection是Java集合顶级接口,其中的元素无序,唯一。Java平台不提供这个接口任何直接的实现。( F?? )
  5. List是有序的Collection,使用此接口能够精确的控制每个元素插入的位置。用户能够使用索引来访问List中的无素,这类似于Java的数组。(? T? )
  6. HashSet采用哈希表存储结构,特点是查询速度快,但是其中元素无序排列。(T??? )
  7. LinkedHashMap是一种有序的HashMap,查询速度快,便于添加删除操作。(?? T )
  8. 基本数据类型的值可以被直接存储在Vector对象中。(F??? )
  9. Dictionary建立了关键字和值的映射,只要提供一个关键字,Dictionary就会返回一个相应的值。(T??? )
  10. 泛型是JavaSE1.7(1.5)的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。Java语言引入泛型的好处是安全简单。( F?? )
  11. Collection是专门操作集合的工具类,提供一系列静态方法实现对各种集合操作。( F?? )Collection是接口类型,存放单值的最大接口; ?Collections是操作集合的工具类,就像数组一样,Arrays类是数组工具类。
  12. Iterator接口可以遍历任何Collection接口的实现类,可以从一个Collection中使用iterator( )方法来获取迭代器实例。迭代器取代了Java集合框架中的Enumeration。(? T? )

四、??? 简答题

  1. 集合和数组的比较

    相同点:都是数据的容器,一个在数组或集合中可以储存多个数据。

    不同点:1.元素:数组中的元素只能是相同;集合中的元素是任意的(泛型) 数组中可以存储基本类型和引用类型,集合只能存储引用类型

    2.长度(元素个数):数组是定长的,一旦初始化长度就不可以修改;集合长度可以修改,可以删除元素和添加元素。

  1. 简述List、Set、Collection、Map的区别和联系。
  1. ArrayList和LinkedList的区别和联系。

    ArrayList:底层是可变数组

???    ?? 特点:一种线性的数据结构,连续存储

?????????    ? ??? 查询快,增删慢?? 不同步(效率高,不安全)

???   ??LinkedList:底层是链表结构,可以添加null元素,并且可以添加多个null

?????     特点:链表:链接列表,是一种线性结构,一条线把每个节点串联起来节点的组成

  1. HashSet采用了哈希表作为存储结构,请说明哈希表的特点和实现原理。

    提示:结合Object类的hashCode()和equals()说明其原理

    HashSet:equals返回true,hashCode返回相同的整数;哈希表;存储的数据是无序的。成员可为任意Object子类的对象,但如果覆盖了equals方法,同时注意修改hashCode方法。

    HashMap键成员可为任意Object子类的对象,但如果覆盖了equals方法,同时注意修改hashCode方法。

    特点:访问速度快

       大小不受限制

      ? ??按键进行索引,没有重复对象

      ? ?用字符串(id:string)检索对象(object)

    基本原理:我们使用一个下标范围比较大的数组来存储元素。可以设计一个函数(哈希函数, 也叫做散列函数),使得每个元素的关键字都与一个函数值(即数组下标)相对应,于是用这个数组单元来存储这个元素;也可以简单的理解为,按照关键字为每一 个元素“分类”,然后将这个元素存储在相应“类”所对应的地方。 但是,不能够保证每个元素的关键字与函数值是一一对应的,因此极有可能出现对于不同的元素,却计算出了相同的函数值,这样就产生了“冲突”,换句话说,就是把不同的元素分在了相同的“类”之中。后面我们将看到一种解决“冲突”的简便做法。 总的来说,“直接定址”与“解决冲突”是哈希表的两大特点。

  1. Vector和ArrayList的区别和联系。

? ???    ?Vector的方法都是同步的,是线程安全的,当元素超过它的初始大小时,Vector会将它的容量翻倍

      ArrayList的方法是不同步的,由于线程的同步必然要影响性能,因此,ArrayList的性能比Vector好。ArrayList只增加50%的大小,这样,ArrayList就有利于节约内存空间。

  1. 请你简述HashMap和Hashtable的区别?

五、??? 编码题

    1. 使用List和Map存放多个图书信息,遍历并输出。其中商品属性:编号,名称,单价,出版社;使用商品编号作为Map中的key。
      1. ID = .name = .price = .publish = ID = .name = .price = .publish = ID+"t"+ name+"t"+price+"t"+ Book b1 = Book("A101","苦难与辉煌",100D,"清华大学出版社" Book b2 = Book("A102"," 欲血荣光",50D,"北京大学出版社" Book b3 = Book("A103"," 红岩t",75D,"人民出版社" Book b4 = Book("A104"," 林海雪原",45D,"清华大学出版社" List l = ArrayList<> System.out.println("=============使用List存放多个图书信息,遍历并输出=============" System.out.println("编号t名称tt单价t出版社" Iterator it = System.out.println("n=============使用Map存放多个图书信息,遍历并输出=============" Map m = HashMap<> System.out.println("编号t名称tt单价t出版社" }
      2. 使用HashSet和TreeSet存储多个商品信息,遍历并输出;其中商品属性:编号,名称,单价,出版社;要求向其中添加多个相同的商品,验证集合中元素的唯一性。
      3. 提示:向HashSet中添加自定义类的对象信息,需要重写hashCode和equals( )

        ???????? ?向TreeSet中添加自定义类的对象信息,需要实现Comparable接口,指定比较规则

        Products Comparable ID = .name = .price = .pbulish = ID = .name = .price = .pbulish = prime = 31 result = 1 result = prime * result + ((ID == ) ? 0 result = prime * result + ((name == ) ? 0 result = prime * result + ((pbulish == ) ? 0 result = prime * result + ((price == ) ? 0 ( == (obj == (getClass() != Products other = (ID == (other.ID != } (! (name == (other.name != } (! (pbulish == (other.pbulish != } (! (price == (other.price != } (! ""+ID+"t"+name+"t"+price+"t"+ 1 System.out.println("使用HashSet存储多个商品信息,遍历并输出n" HashSet hs = HashSet<> hs.add( Products("101","三国演义",50d,"人民出版社" hs.add( Products("102","水浒传","人民出版社" hs.add( Products("103","西游记","人民出版社" hs.add( Products("104","红楼梦","人民出版社" System.out.println("编号t名称t单价t出版社" System.out.println("-----------------------------------" System.out.println("使用TreeSet存储多个商品信息,遍历并输出n" TreeSet tr = TreeSet<> System.out.println("编号t名称t单价t出版社" tr.add( Products("101","四书",30d,"人民出版社" tr.add( Products("102","五经",40d,"人民出版社" tr.add( Products("103","大学",35d,"人民出版社" tr.add( Products("104","中庸",25d,"人民出版社" }
        1. 实现List和Map数据的转换。具体要求如下:
          Student( id, .id = .name = .age = .sex = setId( .id = .name = setAge( .age = .sex = id +"t"+ name+"t" + age+"t" + }

          功能1:定义方法public void listToMap( ){ }将List中Student元素封装到Map中

          1)?????? 使用构造方法Student(int id,int age,String sex )创建多个学生信息并加入List

          2)?????? 遍历List,输出每个Student信息

          3)?????? 将List中数据放入Map,使用Student的id属性作为key,使用Student对象信息作为value

          4)?????? 遍历Map,输出每个Entry的key和value

          = Student(101,"嬴政",35,"男"= Student(102,"刘彻",28,"男"= Student(103,"刘秀",26,"男"= Student(104,"李世民",59,"男"= Student(105,"朱元璋",65,"男"= Student(105,"武则天",54,"女" System.out.println("--------------List遍历---------------n" l = ArrayList<> "-------------Map遍历------------------n" Map m = HashMap<> Iterator it ==} </span><span style="color: #0000ff"&gt;public</span> <span style="color: #0000ff"&gt;static</span> <span style="color: #0000ff"&gt;void</span><span style="color: #000000"&gt; main(String[] args) { Student_test1 s </span>= <span style="color: #0000ff"&gt;new</span><span style="color: #000000"&gt; Student_test1(); s.listToMap(); }

          }
          功能2:定义方法public <span style="color: #0000ff">void<span style="color: #000000"> mapToList( ){ }将Map中Student映射信息封装到List
          1<span style="color: #000000">) 创建实体类StudentEntry,可以存储Map中每个Entry的信息
          2) 使用构造方法Student(<span style="color: #0000ff">int id,String sex )创建多个学生信息,并使用Student的id属性作为key,存入Map
          3<span style="color: #000000">) 创建List对象,每个元素类型是StudentEntry
          4<span style="color: #000000">) 将Map中每个Entry信息放入List对象
          <span style="color: #0000ff">public <span style="color: #0000ff">class<span style="color: #000000"> Student_test2 {
          <span style="color: #0000ff">public <span style="color: #0000ff">void<span style="color: #000000"> mapToList(){
          Student s1 = <span style="color: #0000ff">new Student(101,"女"<span style="color: #000000">);
          <span style="color: #008000">//<span style="color: #008000">创建多个学生信息,并使用Student的id属性作为key,存入Map
          Map<Integer,Student> m = <span style="color: #0000ff">new HashMap<><span style="color: #000000">();
          m.put(s1.getId(),s1);
          m.put(s2.getId(),s2);
          m.put(s3.getId(),s3);
          m.put(s4.getId(),s4);
          m.put(s5.getId(),s5);
          m.put(s6.getId(),s6);
          <span style="color: #008000">//<span style="color: #008000">3.创建List对象,每个元素类型是StudentEntry
          List list = <span style="color: #0000ff">new ArrayList<span style="color: #000000">();

              </span><span style="color: #0000ff"&gt;for</span> (Map.Entry<Integer,Student><span style="color: #000000"&gt; entry : m.entrySet()) {
                  StudentEntry studentEntry </span>= <span style="color: #0000ff"&gt;new</span><span style="color: #000000"&gt; StudentEntry();
                  </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt; 将map中的一个映射关系,封装为一个studentEntry对象</span>

          <span style="color: #000000"> studentEntry.setKey(entry.getKey());
          studentEntry.setStu(entry.getValue());
          <span style="color: #008000">//<span style="color: #008000"> 将studentEntry对象List集合
          <span style="color: #000000"> list.add(studentEntry);
          }
          <span style="color: #008000">//<span style="color: #008000">5.遍历Map
          <span style="color: #0000ff">for<span style="color: #000000"> (StudentEntry se : list) {
          System.out.println(se.getKey() + "t" +<span style="color: #000000"> se.getStu());
          }
          }
          <span style="color: #0000ff">public <span style="color: #0000ff">static <span style="color: #0000ff">void<span style="color: #000000"> main(String[] args) {
          Student_test2 s = <span style="color: #0000ff">new<span style="color: #000000"> Student_test2();
          s.mapToList();
          }
          }

          六、 可选题
          1. 假如有以下email数据“aa@sohu.com,bb@163<span style="color: #000000">.com,cc@sina.com,..”现需要把email中的用户部分和邮件地址部分分离,分离后以键值对应的方式放入HashMap?
          <span style="color: #0000ff">public <span style="color: #0000ff">class<span style="color: #000000"> EmailSplit {
          <span style="color: #0000ff">public <span style="color: #0000ff">static <span style="color: #0000ff">void<span style="color: #000000"> main(String[] args) {
          String s = "aa@sohu.com,bb@163.com,cc@sina.com"<span style="color: #000000">;
          String[] str= s.split(",");<span style="color: #008000">//<span style="color: #008000">得到每一个email
          Map<String,String> m = <span style="color: #0000ff">new HashMap<String,String>();<span style="color: #008000">//<span style="color: #008000">创建HashMap
          <span style="color: #0000ff">for (String string : str) {<span style="color: #008000">//<span style="color: #008000">遍历HashMap
          String[] split = string.split("@");<span style="color: #008000">//<span style="color: #008000">分割email存入map
          m.put(split[0],split[1<span style="color: #000000">]);
          }
          System.out.println(m);
          }
          }
          2<span style="color: #000000">. 由控制台按照固定格式输入学生信息,包括学号,姓名,年龄信息,当输入的内容为exit退出;将输入的学生信息分别封装到一个Student对象中,再将每个Student对象加入到一个集合中,要求集合中的元素按照年龄大小正序排序;最后遍历集合,将集合中学生信息写入到记事本,每个学生数据占单独一行。
          推荐步骤:
          a) 创建Student类,并指定按照年龄正序排列
          b) 通过控制台输入多个不同Student信息。格式规定为:编号#姓名#年龄
          c) 取出字符串中相应信息放入Student对象,并将Student加入到集合中
          d) 遍历集合的过程中将学生的信息输入到记事本
          难点:
          e) 如何指定学生按照年龄正序排列
          f) 如果从字符串“编号#姓名#年龄”中提取学生信息
          g) 放入哪种集合后可以保证学生按照年龄大小正序排列
          h) 如何将集合中学生信息写入记事本,每个学生数据占单独一行

          <span style="color: #0000ff">public <span style="color: #0000ff">static <span style="color: #0000ff">void<span style="color: #000000"> main(String[] args) {
          Scanner sc= <span style="color: #0000ff">new<span style="color: #000000"> Scanner(System.in);
          System.out.println("请输入学生学号:"<span style="color: #000000">);
          Integer ID=<span style="color: #000000"> sc.nextInt();
          System.out.println("请输入学生姓名:"<span style="color: #000000">);
          String name =<span style="color: #000000"> sc.next();
          System.out.println("请输入学生年龄:"<span style="color: #000000">);
          String age =<span style="color: #000000"> sc.next();
          Student_6_2 stu = <span style="color: #0000ff">new<span style="color: #000000"> Student_6_2(ID,name,age);
          <span style="color: #008000">/<span style="color: #008000">Student_6_2 stu1 = new Student_6_2(101,"张三","20");
          Student_6_2 stu2 = new Student_6_2(102,"李四","52");
          Student_6_2 stu3 = new Student_6_2(103,"王五","60");
          Student_6_2 stu4 = new Student_6_2(104,"赵柳","30");
          Student_6_2 stu5 = new Student_6_2(105,"陈浩","45");<span style="color: #008000">
          /<span style="color: #000000">
          Set s = <span style="color: #0000ff">new HashSet<><span style="color: #000000">();
          s.add(stu);
          System.out.println(s);
          }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!