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

    1. 本章学习总结

    *2. 书面作业
    1.ArrayList代码分析
    1.1 解释ArrayList的contains源代码

    该源代码验证该ArrayList中是否包含某个对象,contains的实现即遍历一次ArrayList。若equals,则返回序号。当然,如果对象为空,就没有equals方法
    

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

    先检查要删除的位置如果超出List大小,就抛出IndexOutOfBoundsException异常,即删除此列表中指定位置的元素,将index后面的所有元素全部往前移动,将最后多余的引用置为null。
    

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

    不用考虑,ArrayList在存放的时候可以是不同种类型的元素,因为ArrayList可以存储Object。任何类型的元素都是可以在ArrayList储存。
    

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

    源代码中,将指定的元素到这个列表的末尾,ensureCapacityInternal用来调整容量,当内部数组容量不够时,调用grow方法增加容量,引用了一个大小为原来数组1.5倍的新数组。
    

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

    private声明别的用户或者类不能调用,而public则任何用户和类都可以调用。rangeCheck用于边界检查,rangeCheck方法保证了remove等操作需在容量范围内,超出范围就会抛出异常。
    

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

    散列表采用Hash算法决定集合元素的存储位置,计算出待存储对象的散列码,作为存储的位置的依据,发生冲突时,则连接在发生冲突的元素的后面,用链表连接。将对象存入Hash类集合,需要用到hashCode()方法和equals()方法。
    

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

    ArrayIntegerStack实例化的时候需要规定大小,而ArrayListIntegerStack使用list可以自动扩容。
    ArrayListIntegerStack不需要使用指针,可以直接通过list的一些方法来进行删除,查找等操作,而数组增删查改都要自己编写方法。
    

    3.2 简单描述接口的好处

    接口使同样的方法和操作可以有不同的实现,也可以供不同的类使用,规范了编程流程。
    

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

    public class Main201521123095 {
    
    public static void main(String[] args) {
    // TODO Auto-generated method stub
        Stack<Character> stack = new Stack<Character>();
        Scanner scanner = new Scanner(System.in);
        int a = 1;
        String string = scanner.next(); 
        for (int i = 0; i < string.length(); i++) {
            stack.push(string.charAt(i));      //入栈
        }
    
        for (int j= 0; j < string.length(); j++) {
            if (stack.pop() != string.charAt(j)) {
                //一个个出栈并与字符串进行对比
                System.out.println("no");
                break;
            }
            else {
                System.out.println("yes");
                break;
            }
        }
     }
    }
        4.1实验总结:利用接口,复写入栈,出栈的方法,取栈顶元素的方法
    

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

    while(!A.isEmpty() || !B.isEmpty())
        {
            Integer a1 = A.poll();
            if(a1 != null){
                if(B.isEmpty() && A.isEmpty())
                System.out.print(a1);
                else 
                    System.out.print(a1 + " "); 
            }
            
            Integer a2 = A.poll();
            if(a2 != null){
                if(B.isEmpty() && A.isEmpty())
                System.out.print(a2);
                else 
                    System.out.print(a2 + " "); 
            }
            Integer b = B.poll();
            if(b != null){
                if(B.isEmpty() && A.isEmpty())
                System.out.print(b);
                else 
                    System.out.print(b + " ");
            }
            
        }  
    

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

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

    while (input.hasNextLine()) {
                String str = input.next();
                if (str.equals("!!!!!")){
                    break;}
                else if (!str.contains(str))
                    str.add(str);
            }
    5.1 实验总结:这题关键就是使用了Set的自然排序实现类TreeSet,此类可以对添加的对象进行默认排序。
    

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

  • 相关阅读:
    SQL 函数、存储过程、游标与事务模板
    JS给Element添加方法
    检测当前浏览器是否启用JS,Cookie
    Android 电量测试以及电量优化
    [转载]百度免费的文本编辑器Ueditor的使用说明
    sql 常用信息
    vs2010智能提示消失的解决办法
    IIS未能加载文件或程序集“System.Data.SQLite”或它的某一个依赖项
    智能的产生
    C#日期格式化
  • 原文地址:https://www.cnblogs.com/YYYYYYY/p/6682533.html
Copyright © 2011-2022 走看看