zoukankan      html  css  js  c++  java
  • 学号:201521123116 《java程序设计》第七周学习总结

    1. 本周学习总结

    2. 书面作业

    Q1 ArrayList代码分析

    1.1 解释ArrayList的contains源代码
    ArrayList的contains源代码

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

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

    ArrayList中的方法中参数的类型都是Object类,Object类又是所有类的父类,所以不需要考虑元素的类型。

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

    贴上标签

    ensureCapacityInternal会判断是否要扩容。

    1.5 分析private voidrangeCheck(intindex)源代码,为什么该方法应该声明为private而不声明为public?

    避免被外界访问,当调用了rangeCheck(int index)时,就会在数组越界时发出提醒,而且这是一种内部方法没必要声明成Public。

    HashSet原理

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

    • 当从HashSet中访问元素时,HashSet先计算该元素的hashCode值,然后到该hashCode对应的位置取出该元素。
    • 要调用equals和hashCode方法

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

      使用HashSet中的contain方法那和List中的contain方法的速度简直不可同日而语,

          public boolean contains(Object o) {  
          return map.containsKey(o);  
        }

    List中是遍历而HashSet是利用hashCode快速查找到并利用equals进行比较,当比较值为真则覆盖原来的值若是假则插入到hash桶中。

    ArrayListIntegerStack

    Q3 ArrayListIntegerStack

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

    • ArrayListIntegerStack是用ArrayList来实现栈,ArrayIntegerStack是用Integer数组来实现栈。
    • ArrayIntegerStack容量有限会出现栈满的情况,ArrayListIntegerStack不存在栈满的情况。
    • ArrayIntegerStack需要定义一个Top来入栈出栈,而ArrayListIntegerStack则不需要,直接用里面已有的方法就能实现入栈出栈。

    3.2 简单描述接口的好处.

    ArrayIntegerStack,,ArrayListIntegerStack都实现了IntegerStack接口。

    Stack and Queue

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

    public class Main201521123116 {
    public static void main(String[] args) {
    Scanner sc=new Scanner(System.in);
    String a=sc.next();
    System.out.println(isHuiWen(a));
    }

    public static boolean isHuiWen(String text){
    ArrayListIntegerStack stack=new ArrayListIntegerStack();
    /
    *
    *ArrayListIntegerStack为本周实验5-1中定义过的栈
    */

    char []b=text.toCharArray();
    int length=b.length ;
    for(int i=0;i<length/2;i++)
    {
    if(b[i]!=b[length-i-1]){
    return false;
    }
    return true;
    }
    }

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

    建立两个队列A和B,将放在数组里的数字根据奇数偶数分别加入到队列A与B中,再根据题意输出

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

    5.1 实验总结

     Set<String> str = new TreeSet<String>();
            Scanner sc = new Scanner(System.in);
            while (sc.hasNext()) {
                String s = sc.next();
                if (!s.equals("!!!!!"))
                    str.add(s);
                else
                    break;
            }
            System.out.println(str.size());
            for (int i = 0; i < 10; i++) {
                System.out.println(str.toArray()[i]);
            }

    使用 TreeSet,它具有自动排序功能。题目只要求10个单词 所以最好要加上str.toArray()[i];PTA提交正确。

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

    3.2 PTA实验

    编程(5-1, 5-2, 5-3(选做), 5-6)
    实验总结已经在作业中体现,不用写。

  • 相关阅读:
    ASP.NET常见命名空间及其功能描述
    C#中的里氏替换原则
    Java中的split函数的用法
    shader之旅-7-平面阴影(planar shadow)
    OpenGL三角形的双面不同颜色的绘制
    MATLAB squeeze 函数
    matlab 常用函数汇总
    第一个OpenGL程序
    Github 留言系统
    Paging 简单自由的分页生成器
  • 原文地址:https://www.cnblogs.com/gysbettrer/p/6682635.html
Copyright © 2011-2022 走看看