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

    1. 本周学习总结

    2. 书面作业

    Q1.ArrayList代码分析
    1.1 解释ArrayList的contains源代码
    Ans:
    ArrayList的contains源代码

    contain源代码中有这么一行

    * @return <tt>true</tt> if this list contains the specified element  //翻译过来就是“列表中包含指定的特殊元素时,返回True”
    

    即“当且仅当此列表包含至少一个满足 (onull ? enull : o.equals(e)) 的元素 e 时,则返回 true。”

    1.2 解释E remove(int index)源代码
    Ans:
    图示为E remove(int index)源代码:

    删除数组中指定位置的元素,然后将该元素后的元素前移。

    1.3 结合1.1与1.2,回答ArrayList存储数据时需要考虑元素的类型吗?
    Ans:
    不需要考虑,此处ArrayList的存储数据类型是Object类,是所有类型父类,因此可以考虑不同的类型,都可以在此之中转换。
    答:不用考虑,因为其参数为Objcet类型的对象,Object类又是所有类的父类。也就是说时不需要考虑元素的类型,随便放什么类型进去都可以转换类型。

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

    当内部容量不够时,会将原来的数组元素复制到新的更大的数组,然后将ArrayList的引用指向新的数组。

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

    对使用用户而言,只需要得到remove的结果而不需要知道实现方式。所以此处用private。

    Q2.HashSet原理
    2.1 将元素加入HashSet(散列集)中,其存储位置如何确定?需要调用那些方法?
    Ans:
    HashSet(散列集)的存储形式为链表加上数组的存储形式。
    将元素加入HashSet中时,会先调用元素的HashCode()方法,得到元素的HashCode值,由该值的不同确定不同的存储位置。
    若表中已有其他元素,则调用加入对象的equals()方法与表中元素进行比较。如果比较结果为false,则将对象插入表中。如果比较结果为true,则用新的值替换旧的值。

    Q3.ArrayListIntegerStack
    题集jmu-Java-05-集合之5-1 ArrayListIntegerStack
    3.1 比较自己写的ArrayListIntegerStack与自己在题集jmu-Java-04-面向对象2-进阶-多态、接口与内部类中的题目5-3自定义接口ArrayIntegerStack,有什么不同?(不要出现大段代码)
    Ans:
    ①同样是栈,但栈的实现方法不同,ArrayListIntegerStack是用ArrayList来实现栈,ArrayIntegerStack是用Integer数组来实现栈。
    ②同样是栈,但是应对栈满的解决方法不同,ArrayItegerStack会直接栈满,而ArrayListIntegerStack像Q1.4说的一样,可以创建新数组扩充容量。
    3.2 简单描述接口的好处.
    Ans:
    可以做到相同方法,不同实现。
    例如3.1中的ArrayListIntegerStack和ArrayIntegerStack都继承了同一个方法,即IntegerStack,也就是说我们修改它们的实现,都不会影响他们完成的方法。
    Q4.Stack and Queue
    4.1 编写函数判断一个给定字符串是否是回文,一定要使用栈,但不能使用java的Stack类(具体原因自己搜索)。请粘贴你的代码,类名为Main你的学号。

    import java.util.*;
    
    interface StringStack{
        public String push(String item);
        public String pop();
    }
    class ArrayListStringStack implements StringStack{
        private List<String> list;
        
        public ArrayListStringStack() {
            list=new ArrayList<String>();
        }
        @Override
        public String push(String item) {
            // TODO Auto-generated method stub
            if(item==null)
                return null;
            list.add(item);
            return item;
        }
    
        @Override
        public String pop() {
            // TODO Auto-generated method stub
            if(list.isEmpty())
                return null;
            return list.remove(list.size()-1);
        }
    
    }
    public class Main201521123028{
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Scanner sca=new Scanner(System.in);
            StringStack stack=new ArrayListStringStack();
            String s=sca.next();
            int j=1;
            for(int i=0;i<s.length();i++)
            {
                stack.push(String.valueOf(s.charAt(i)));
            }
            for(int i=0;i<s.length();i++)
            {
                if(!String.valueOf(s.charAt(i)).equals(stack.pop()))j=0;
                else j=1;
            }
            if(j==1)System.out.println("true");
            else System.out.println("flase");
            }
    
    }
    

    Q5.统计文字中的单词数量并按单词的字母顺序排序后输出
    题集jmu-Java-05-集合之5-2 统计文字中的单词数量并按单词的字母顺序排序后输出 (不要出现大段代码)
    5.1 实验总结
    Ans:使用代码注释说明一下比较重要的程序段

    TreeSet<String> strset=new TreeSet<String>();//使用Set方法,会默认将元素排序,因此无需手动排序
    		//输入单词,若输入不为"!!!!!"则继续输入
    		for(i=0;;i++){
    			str=in.next();
    			if(str.equals("!!!!!")) break;
    			else strset.add(str);
    		}
    

    当使用Set方法后,就无需我们完成排序操作了,那么只需要完成输出前十单词和统计单词数量就可以了

    3.1. 码云代码提交记录

  • 相关阅读:
    稳扎稳打Silverlight(68) 5.0 XNA 之绘制 3D 图形
    稳扎稳打Silverlight(65) 5.0绑定之通过 ICustomTypeProvider 绑定动态生成的属性
    千呼万唤 HTML 5 (4) 文本语义元素
    千呼万唤 HTML 5 (8) 画布(canvas)之绘制图形
    稳扎稳打Silverlight(66) 5.0其它之自定义 XAML 扩展标记, 通过 XNA 处理声音效果, 支持矢量打印, 统计连击的次数
    千呼万唤 HTML 5 (9) 画布(canvas)之承载媒体
    梦想成真 XNA (2) 绘制精灵,绘制文字
    千呼万唤 HTML 5 (6) 表单元素之 input 元素
    梦想成真 XNA (10) 3D 模型的碰撞检测
    稳扎稳打Silverlight(64) 5.0绑定之 Style 中的 Setter 支持绑定, 绑定父级链上的元素, 隐式指定数据模板, UI 上数据更新的触发方式
  • 原文地址:https://www.cnblogs.com/KILL-ljj/p/6682147.html
Copyright © 2011-2022 走看看