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

    1. 本周学习总结

    2. 书面作业

    1.ArrayList代码分析
    1.1 解释ArrayList的contains源代码


    答:contains方法调用indexOf方法,遍历遍历内部用于保存数据的elementData数组,如果匹配返回数组中的下标。

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

    答:RangeCheck()的作用是进行边界检查,检查要删除的位置是否超出List大小,如果没有,删掉某个元素后,从这个位置开始向左移动所有后续元素,将最后一位置为null。

    1.3 结合1.1与1.2,回答ArrayList存储数据时需要考虑元素的类型吗?
    答:不需要,因为其参数为Objcet类型的对象,Object类又是所有类的父类,返回数据的时候它会通过强制转型为类实例化时指定的类型。

    1.4 分析add源代码,回答当内部数组容量不够时,怎么办?
    答:调用ensureCapacityInternal方法,使elementData数组可以再容纳一个新元素。

    1.5 分析private void rangeCheck(int index)源代码,为什么该方法应该声明为private而不声明为public?
    答:rangeCheck的作用是检查数组是否越界,不需要外部的访问,所以没必要用public声明。

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

    答:调用hashCode()方法,确定该对象在列表中的存储位置,如果该位置已有其他元素,则再通过调用equals来比较内容是否相同;
    需要调用hashCode()方法和equals()方法。

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

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

    答:前者使用了ArrayList的动态数组,不需要判断是否栈满,直接使用ArrayList内部的方法,后者用Array实现栈要考虑栈顶指针的移动,并且一开始就要给定数组大小。

    3.2 简单描述接口的好处.
    答:相同的方法名,不同的实现;

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

    import java.util.ArrayList;
    import java.util.List;
    import java.util.Scanner;
    
    interface StringStack{
        public String push(String item);
        public String pop();
    }
    class ArrayListStack implements StringStack{
        private List<String> list;
        
        public ArrayListStack() {
            list=new ArrayList<String>();
        }
        @Override
        public String push(String item) {
            if(item==null)
                return null;
            list.add(item);
            return item;
        }
    
        @Override
        public String pop() {
            if(list.isEmpty())
                return null;
            return list.remove(list.size()-1);
        }
    
    }
    public class Main201521123060 {
        public static void main(String[] args) {
            Scanner sc=new Scanner(System.in);
            String n=sc.next();
            ArrayListStack stack=new ArrayListStack();   
            int s = 0;
            for(int i=0;i<n.length();i++)
            {
                stack.push(String.valueOf(n.charAt(i)));
            }
            for(int i=0;i<n.length();i++)
            {
                if(String.valueOf(n.charAt(i)).equals(stack.pop()))
                	s=1;
                else
                {
                    s=0;
                    break;
                }
            }
            if(s==1)
            	System.out.println("YES");
            else 
            	System.out.println("NO");
            sc.close();
            }
    }
    

    4.2 题集jmu-Java-05-集合之5-6 银行业务队列简单模拟。(不要出现大段代码)
    编号为奇数的顾客到A窗口办理业务,为偶数的顾客则去B窗口

    	for (int i=0;i<N;i++) 
                   {
    			int n= sc.nextInt();
    			if (n%2==0) 
    				B.add(n);
    			else A.add(n);
    		}
    

    按业务处理完成的顺序输出顾客的编号

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

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

    	if(set.size()<=10)
    		{
    			for (String string :set)
    			{
    				System.out.println(string);
    			}
    		}
    		else
    		{
    			for (int i=0;i<10;i++) {
    				System.out.println(set.toArray()[i]);
    			}
    		}
    

    5.1 实验总结
    开始卡在输入以!!!!!为结束,后来老师讲过后才会。

    6.选做:加分考察-统计文字中的单词数量并按出现次数排序
    题集jmu-Java-05-集合之5-3 统计文字中的单词数量并按出现次数排序(不要出现大段代码)
    6.1 伪代码
    6.2 实验总结

    7.面向对象设计大作业-改进
    7.1 完善图形界面(说明与上次作业相比增加与修改了些什么)
    7.2 使用集合类改进大作业

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

  • 相关阅读:
    Oracle SQL语句大全—查看表空间
    Class to disable copy and assign constructor
    在moss上自己总结了点小经验。。高手可以飘过 转贴
    在MOSS中直接嵌入ASP.NET Page zt
    Project Web Access 2007自定义FORM验证登录实现 zt
    SharePoint Portal Server 2003 中的单一登录 zt
    vs2008 开发 MOSS 顺序工作流
    VS2008开发MOSS工作流几个需要注意的地方
    向MOSS页面中添加服务器端代码的另外一种方式 zt
    状态机工作流的 SpecialPermissions
  • 原文地址:https://www.cnblogs.com/zq1996/p/6682813.html
Copyright © 2011-2022 走看看