zoukankan      html  css  js  c++  java
  • 201521123032 《Java程序设计》第7周学习总结

    1. 本周学习总结

    以你喜欢的方式(思维导图或其他)归纳总结集合相关内容。

    2. 书面作业

    ArrayList代码分析

    1.1 解释ArrayList的contains源代码

    在contains方法中调用indexOF方法,首先比较下标o,如果o==null那么elementData[]中是否==null,如果有就返回下标,如果没有就返回-1。如果o不为null,那么就用equals比较o与elementData[]有没有相同的情况,若有就返回下标,没有就返回-1。

    1.2 解释E remove(int index)源代码

    首先检查是否在边界范围内,用E oldValue保存原来的,判断后把数组前移,最后一位置为null。

    1.3 结合1.1与1.2,回答ArrayList存储数据时需要考虑元素的类型吗?

    不需要,因为是Object类,所有类都是它的子类,都会被强制转换类型。

    1.4 分析add源代码,回答当内部数组容量不够时,怎么办?

    扩充容量到所需的容量大小。

    1.5 分析private void rangeCheck(int index)源代码,为什么该方法应该声明为private而不声明为public?


    这个是内部使用的,就是查看是否出界,没必要给外界进行修改。

    HashSet原理

    2.1 将元素加入HashSet(散列集)中,其存储位置如何确定?需要调用那些方法?

    HashSet内部实际是使用了HashMap,

    2.2 选做:尝试分析HashSet源代码后,重新解释1.1

    ArrayListIntegerStack

    题集jmu-Java-05-集合之5-1 ArrayListIntegerStack

    3.1 比较自己写的ArrayListIntegerStack与自己在题集jmu-Java-04-面向对象2-进阶-多态、接口与内部类中的题目5-3自定义接口ArrayIntegerStack,有什么不同?(不要出现大段代码)

    ArrayListIntegerStack是用ArrayList来实现,ArrayIntegerStack是用Integer数组来实现。ArrayIntegerStack需要用到top而ArrayListIntegerStack不需要。

    3.2 简单描述接口的好处.

    实现了扩展功能,对于这题利用接口IntegerStack操作不同的方法。

    Stack and Queue

    4.1 编写函数判断一个给定字符串是否是回文,一定要使用栈,但不能使用java的Stack类(具体原因自己搜索)。请粘贴你的代码,类名为Main你的学号。

    #include <iosteam> 
    #include <string> 
    using namespace std; 
     
    #define EMPTY 0 
    #define FULL 10000 
    #define MAX 10000 
     
    typedef char data; 
     
    typedef struct elem { 
     data d; 
     struct elem *next; 
    }elem; 
     
    typedef struct stack { 
     int cnt; 
     elem *top; 
    }stack; 
     
    void initialize(stack *stk); 
    void push(data d, stack *stk); 
    data pop(stack *stk); 
    bool empty(const stack *stk); 
    bool full(const stack *stk); //栈操作函数 
     
    void initialize(stack *stk) 
    { 
     stk->cnt = 0; 
     stk->top = NULL; 
    } 
     
    bool empty(const stack *stk) 
    { 
     return stk->cnt == EMPTY; 
    } 
     
    bool full(const stack *stk) 
    { 
     return stk->cnt == FULL; 
    } 
     
    void push(data d, stack *stk) 
    { 
     elem *p; 
      
     if (!full(stk)) 
     { 
      p = (elem *)malloc(sizeof(elem)); 
      p->d = d; 
      p->next = stk->top; 
      stk->top = p; 
      stk->cnt++; 
     } 
      
    } 
     
    data pop(stack *stk) 
    { 
     data d; 
     elem *p; 
     
     if(!empty(stk)) 
     { 
      d = stk->top->d; 
      p = stk->top; 
      stk->top = stk->top->next; 
      stk->cnt--; 
      delete p; 
     } 
      
     return d; 
    } 
     
    int main201521123032(void) 
    { 
     data input[MAX]; 
     stack temp; 
     int i = 0; 
     int flag = 0; 
     
     initialize(&temp); //初始化临时栈 
     cin>>&input; //输入字符串 
     
     while (input[i] != '@') 
     {//字符串入栈 
      push(input[i], &temp); 
      i++; 
     } 
     
     while (!empty(&temp)) 
     {//字符依次出栈和字符数组比较,判断是否回文数 
      if (temp.top->d == input[flag]) 
      { 
       pop(&temp); 
       flag++; 
      } 
      else 
      { 
       cout<<"此字符序列不是回文数!
    "; 
       break; 
      } 
     } 
      
     if (empty(&temp)) 
      cout<<"此字符序列是回文数!
    "; 
     
     return 1; 
    }
    

    参考[1](http://wenda.so.com/q/1362524971061758)

    4.2 题集jmu-Java-05-集合之5-6 银行业务队列简单模拟。(不要出现大段代码)

    统计文字中的单词数量并按单词的字母顺序排序后输出

    题集jmu-Java-05-集合之5-2 统计文字中的单词数量并按单词的字母顺序排序后输出 (不要出现大段代码)

    5.1 实验总结

    每个单词出现只要统计一次,而Set的实现类中用TreeSet对对象进行排序

    3. 码云上代码提交记录及PTA实验总结

    题目集:jmu-Java-05-集合

    3.1. 码云代码提交记录

    在码云的项目中,依次选择“统计-Commits历史-设置时间段”, 然后搜索并截图

    3.2. PTA实验

    编程(5-1, 5-2, 5-3(选做), 5-6)

    实验总结已经在作业中体现,不用写。

  • 相关阅读:
    POJ 2251 Dungeon Master
    HDU 3085 Nightmare Ⅱ
    CodeForces 1060 B Maximum Sum of Digits
    HDU 1166 敌兵布阵(树状数组)
    HDOJ 2050 折线分割平面
    HDU 5879 Cure
    HDU 1878 欧拉回路
    HDU 6225 Little Boxes
    ZOJ 2971 Give Me the Number
    HDU 2680 Choose the best route
  • 原文地址:https://www.cnblogs.com/hdf433/p/6682920.html
Copyright © 2011-2022 走看看