zoukankan      html  css  js  c++  java
  • Java 第八周总结

    1. 本周学习总结

    2. 书面作业

    1.List中指定元素的删除

    1.1 实验总结

    • list中可以通过list.get(i)来获取具体第几个的元素的值,再通过compareTo来对比
    • 通过in.hasNext可以当作扫描器,以空格为分隔,切割各个元素,通过add分别输入到list中

    2.统计文字中的单词数量并按出现次数排序(尽量不要出现代码)

    2.1 伪代码(简单写出大体步骤)

    • 输入同5-2,不变
    • 相同的单词输入Map里
    Map<String,Integer> coun =new TreeMap<String,Integer>();
    if(set.contains(a))
    			{
    				if(coun.containsKey(a))
    					coun.put(a, coun.get(a)+1);
    				else
    					coun.put(a, 2);						
    			}
    			set.add(a);		
    
    • 因为排序要求有变,所以通过collection比较器来实现排序
    List<Map.Entry<String,Integer>> list = new ArrayList<Map.Entry<String,Integer>>(coun.entrySet());
    		Collections.sort(list,new Comparator<Map.Entry<String,Integer>>(){
    
    			@Override
    			public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
    				return (o2.getValue() - o1.getValue());
    			}
    			
    		});
    

    2.2 实验总结

    • Map以按键/数值对的形式存储数据,和数组非常相似,在数组中存在的索引
    • 关于怎么使用,一般是选择Map的子类,而不直接用Map类。如:HashMap,TreeMap Map<String,Integer> coun =new HashMap<String,Integer>();
    • remove(Object key) 从map中删除键和关联的值
    • put(Object key,Object valus)将指定值与指定键相关联

    2.3 截图你的提交结果(出现学号)

    3.倒排索引(题目5-4)

    3.1 伪代码(简单写出大体步骤)

    	for(int i=0;i<arr.size();i++){
    			int b=i+1;//用来给行数加1,因为数组都是从0开始的,对行数不友好
    				map2.put(arr.get(i), i);	//第几行的字符串全部加到map2中		
    				//System.out.println(map2);
    				String[] s1=arr.get(i).split(" ");//把这一行的字符串按单词分开
    				for(int j=0;j<s1.length;j++){	//分开的一个个的单词
    					String str=s1[j];//str 代表这一个个的单词
    					if(!map3.containsKey(str)){//如果map3中没有这个单词
    						//value=map2.get(str);
    						String sss=String.valueOf(b);
    						map3.put(str, sss);//把这个单词加到map3里,value等于行数i
    					}
    					else{
    						value1=map3.get(str);//获取这个单词在map2中的行数
    						map3.put(str, value1+","+b);//放到map3里
    						//System.out.println(map3);
    					}						
    				}
    			}//把各种值存到map里面。map2是存放每行的信息,map3是存放单词信息
    
    		for(Entry<String, String> a : map3.entrySet()){
    			System.out.println(a);
    		}
    

    3.2 实验总结

    • 搞清楚每个map是干什么用的很重要,不然很容易混乱
    • 使用map.get(key)可以获取到key对应的value值,从而对这个值进行一些操作
    • ArrayList的get方法,可以获取动态数组的每个值,通过arr.get(i)遍历数组。

    4.Stream与Lambda

    
    编写一个Student类,属性为:
    private Long id;
    private String name;
    private int age;
    private Gender gender;//枚举类型
    private boolean joinsACM; //是否参加过ACM比赛
    创建一集合对象,如List,内有若干Student对象用于后面的测试。
    

    4.1 使用传统方法编写一个方法,将id>10,name为zhang, age>20, gender为女,参加过ACM比赛的学生筛选出来,放入新的集合。在main中调用,然后输出结果。

    Student a;
    for(int i=0;i<6;i++)
        {
            a=list.get(i);//获取每一个Student的类的值
            if(a.getId()>10&&a.getName().equals("zhang")&&a.getAge()>20&&a.getGender()==Gender.weman&&a.isJoinsACM())//进行筛选
               list2.add(a);//符合条件的加到list2中
        }
    

    4.2 使用java8中的stream(), filter(), collect()编写功能同4.1的函数,并测试。

    4.3 构建测试集合的时候,除了正常的Student对象,再往集合中添加一些null,然后重新改写4.2,使其不出现异常。

    5.泛型类:GeneralStack(题目5-5)

    5.1 GeneralStack接口的代码

    interface GeneralStack<T>{
    	T push(T item);            
    	T pop();                 
    	T peek();                
    	public boolean empty();
    	public int size();    
    }
    
    while(true){
    			String str=in.next();
    			if(str.equals("quit"))
    				break;		
    			else
    			{
    				int m=in.nextInt();
    				int n=in.nextInt();				
    				if(str.equals("Integer")){
    					System.out.println("Integer Test");
    					ArrayListGeneralStack stack=new ArrayListGeneralStack();
    					for(int i=0;i<m;i++){
    						int a=in.nextInt();
    						stack.push(a);
    						System.out.println("Push:"+stack.peek());
    					}
    					for(int j=0;j<n;j++){
    						Integer b=(Integer) stack.pop();
    						System.out.println("Pop:"+b);
    					}
    					stack.toString();	
    					int a=0;
    					for(int i=0;i<=stack.size()+1;i++){
    						if(!stack.empty()){
    							Integer b=(Integer) stack.pop();
    							a=a+b;
    						}	
    					}
    					System.out.println("sum="+a);
    					System.out.println(stack.getClass().getInterfaces()[0]);						
    				}
    				if(str.equals("Double")){
    					System.out.println("Double Test");
    					ArrayListGeneralStack stack=new ArrayListGeneralStack();
    					for(int i=0;i<m;i++){
    						Double a=in.nextDouble();
    						stack.push(a);					
    						System.out.println("Push:"+stack.peek());
    					}
    					for(int j=0;j<n;j++){
    						System.out.println("Pop:"+stack.peek());
    						stack.pop();						
    					}
    					stack.toString();
    					Double a=0.0;
    					for(int i=0;i<=stack.size()+1;i++){
    						if(!stack.empty()){
    							Double b=(Double) stack.pop();						
    							a=a+b;
    						}					
    					}
    					System.out.println("sum="+a);			
    					System.out.println(stack.getClass().getInterfaces()[0]);
    				}
    				if(str.equals("Car")){
    					System.out.println("Car Test");
    					ArrayListGeneralStack stack=new ArrayListGeneralStack();				
    					for(int i=0;i<m;i++){
    						Car a = new Car(in.nextInt(),in.next());
    						stack.push(a);
    						System.out.println("Push:"+stack.peek());
    					}
    					for(int j=0;j<n;j++){
    						Car b=(Car) stack.peek();
    						stack.pop();
    						System.out.println("Pop:"+b);
    					}
    					stack.toString();
    					for(int i=0;i<stack.size();i++){
    						if(!stack.empty()){
    							Car b=(Car) stack.pop();
    							String name=b.getMame();
    							System.out.println(name);
    						}					
    					}
    					System.out.println(stack.getClass().getInterfaces()[0]);
    				}
    			}				
    		}
    

    5.2 结合本题,说明泛型有什么好处

    • Java 泛型的参数只可以代表类,不能代表个别对象
    • 下两种形式(假设 T 是泛型的类型参数,C 是一般类、泛类,或是泛型的类型参数):T 实现接口 I 。T 是 C ,或继承自 C 。一个泛型类不能实现Throwable接口。这里使用的是T.

    5.3 截图你的提交结果(出现学号)

    6.泛型方法

    6.1 编写方法max,该方法可以返回List中所有元素的最大值。List中的元素必须实现Comparable接口。编写的max方法需使得String max = max(strList)可以运行成功,其中strList为List类型。

    6.2 编写方法max1,基本功能同6.1,但让其所返回的值可以赋予其父类型变量。如有User类,其子类为StuUser,且均实现了Comparable接口。编写max1使得User user = max1(stuList);可以运行成功,其中stuList为List类型。也可使得Object user = max(stuList)运行成功。

    3. 码云上代码提交记录

  • 相关阅读:
    点击图片等比缩放
    C# 使用 NPOI 库读写 Excel 文件
    vue url生产二维码
    centos Linux 同步Windows 时间
    centos 搭建 docker sentry
    centos 安装 pip
    webpack 提升90%的构建速度 HardSourceWebpackPlugin
    webpack 原生分析
    webpack 分析
    nodejs——js 实现webSocket 兼容移动端
  • 原文地址:https://www.cnblogs.com/ycll/p/6701532.html
Copyright © 2011-2022 走看看