当前位置: 首页 > 编程日记 > 正文

第十周课下作业

第十周课下作业(补做课堂测试)

一、知识点总结

1、单链表

  • 创建单链表
  • 链表中数据的插入list.add("**");
  • 链表中数据的排序Collections.sort();
  • 链表中数据的删除lsit.remove("");

2、排序

  • 树集概念
  • 树映射 TreeMap<K,V>**适合用于数据的排序**
  • 通过关键字进行排序TreeMap<StudentKey,Student> treemap= new TreeMap<StudentKey,Student>();
  • 对数据进行排序(比较comparable和comparator)
在List或数组中的对象如果没有实现Comparable接口时,那么就需要调用者为需要排序的数组或List设置一个Compartor,Compartor的compare方法用来告诉代码应该怎么去比较两个实例,然后根据比较结果进行排序
 - comparator
package java.util;
public interface Comparator<T> {int compare(T o1, T o2);boolean equals(Object obj);
}
- comparable
package java.lang;
import java.util.*;
public interface Comparable<T> {public int compareTo(T o);
}
- 总结
Comparable 是排序接口;若一个类实现了 Comparable 接口,就意味着 “该类支持排序”。而 Comparator 是比较器;我们若需要控制某个类的次序,可以建立一个 “该类的比较器” 来进行排序。
前者应该比较固定,和一个具体类相绑定,而后者比较灵活,它可以被用于各个需要比较功能的类使用。可以说前者属于 “静态绑定”,而后者可以 “动态绑定”。
Comparable 相当于 “内部比较器”,而 Comparator 相当于 “外部比较器”。

二、补做内容与截图

1、单链表

  • 创建链表
    1047870-20180505102809771-1305287943.png

  • 创建结点
    1047870-20180505102833423-1801831430.png

  • 插入自己的学号并排序
    1047870-20180505102903034-484072986.png

  • 删除自己的学号并打印
    1047870-20180505102913810-158261096.png

  • 整体代码
import java.util.*;
public class MyList {public static void main(String [] args) {List<String> mylist=new LinkedList<String>();
//选用合适的构造方法,用你学号前后各两名同学的学号创建四个结点mylist.add("20165224");mylist.add("20165225");mylist.add("20165227");mylist.add("20165228");
//把上面四个节点连成一个没有头结点的单链表System.out.println("打印初始链表");
//遍历单链表,打印每个结点的Iterator<String> iter=mylist.iterator();while (iter.hasNext()){String num=iter.next();System.out.println(num);}
//把你自己插入到合适的位置(学号升序)mylist.add("20165226");Collections.sort(mylist);
//遍历单链表,打印每个结点的System.out.println("插入我的学号在排序之后,链表中的数据:");iter =mylist.iterator();while(iter.hasNext()){String num=iter.next();System.out.println(num);}
//从链表中删除自己mylist.remove("20165226");System.out.println("删除我的学号之后打印链表:");
//遍历单链表,打印每个结点的iter=mylist.iterator();while(iter.hasNext()){String num=iter.next();System.out.println(num);}}
}
  • 运行结果
    1047870-20180505102659313-2063996093.png

2、排序

  • 创建Student类的对象
    1047870-20180505115445134-867135385.png

  • 调用comparator方法
    1047870-20180506102154896-1777242832.png

  • 按关键字总成绩进行排序
    1047870-20180506102037061-725549442.png

  • 按关键字学号进行排序
    1047870-20180506102050378-42956376.png

  • 整体代码
import java.lang.String;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class StudentTest {class Stu{public int age;public String name;public int id;public int english_score;public int computer_score;public int maths_score;public int total_score;public Stu(int id, String name,int english_score,int computer_score,int maths_score,int total_score) {super();this.id = id;this.name = name;this.english_score = english_score;this.computer_score = computer_score;this.maths_score = maths_score;this.total_score = total_score;}@Overridepublic String toString() {return ( "\n"+" 学号 " + id + " 姓名 " + name +" 英语 "+english_score+" 计算机 "+computer_score+" 数学 "+maths_score+" 总成绩 "+total_score+"\n");}}public static void main(String[] args) {List<Stu> list= new ArrayList<>();list.add(new StudentTest().new Stu(20165224, "陆艺杰",89,67,78,234));list.add(new StudentTest().new Stu(20165227, "朱越",78,90,98,266));list.add(new StudentTest().new Stu(20165225, "王高源",45,66,87,198));list.add(new StudentTest().new Stu(20165226, "刘香杉",88,90,88,266));list.add(new StudentTest().new Stu(20165228, "苏祚堃",76,56,89,221));Collections.sort(list, new Comparator<Stu>() {@Overridepublic int compare(Stu o1, Stu o2) {return o1.id - o2.id;}});System.out.println("按照学号排序:"+list);Collections.sort(list, new Comparator<Stu>() {@Overridepublic int compare(Stu o1, Stu o2) {return o1.total_score - o2.total_score;}});System.out.println("按总成绩顺序排序:"+list);}
}
  • 运行结果
    1047870-20180506103910150-1434286780.png

三、补做教材第十五章编程题目

1、使用堆栈结构输出an的若干项,其中an=2an-1 +2an-2 ,a1=3,a2=8

import java.util.*; 
public class E {
public static void main(String args[]) {
Stack<Integer> stack=new Stack<Integer();stack.push(new Integer(3));stack.push(new Integer(8));int k=1;while(k<=10) {for(int i=1;i<=2;i++) {Integer F1=stack.pop();int f1=F1.intValue();Integer F2=stack.pop();int f2=F2.intValue(); Integer temp=new Integer(2*f1+2*f2);System.out.println(""+temp.toString());stack.push(temp);stack.push(F2);k++;}}}}

2、编写一个程序,将链表中的学生英语成绩单存放到一个树集中,使得按成绩自动排序,并输出排序结果

import java.util.*; 
class Student implements Comparable {int english=0; 
String name; Student(int english,String name) {this.name=name;this.english=english;} public int compareTo(Object b) {Student st=(Student)b;return (this.english-st.english);}} 
public class E { public static void main(String args[]) { List<Student> list=new LinkedList<Student>();int score []={65,76,45,99,77,88,100,79}; String name[]={"张三","李四","旺季","加戈","为哈","周和","赵李","将集"};for(int i=0;i<score.length;i++){ list.add(new Student(score[i],name[i]));} Iterator<Student> iter=list.iterator(); TreeSet<Student> mytree=new TreeSet<Student>();while(iter.hasNext()){Student stu=iter.next();mytree.add(stu);} Iterator<Student> te=mytree.iterator();while(te.hasNext()) {Student stu=te.next(); System.out.println(""+stu.name+" "+stu.english);}}}

3、有10个U盘,有两个重要的属性:价格和容量。编写一个应用程序,使用TreeMap<K,V>类,分别按照价格和容量排序来输出10个U盘的详细信息

 import java.util.*; 
class UDiscKey implements Comparable {double key=0;UDiscKey(double d) {key=d;} public int compareTo(Object b) {UDiscKey disc=(UDiscKey)b; if((this.key-disc.key)==0)return -1;else return (int)((this.key-disc.key)*1000);}} 
class UDisc{int amount;double price; UDisc(int m,double e) {amount=m;price=e;}} 
public class E { public static void main(String args[ ]) { TreeMap<UDiscKey,UDisc>  treemap= new TreeMap<UDiscKey,UDisc>();int amount[]={1,2,4,8,16};double price[]={867,266,390,556};UDisc UDisc[]=new UDisc[4];for(int k=0;k<UDisc.length;k++) { UDisc[k]=new UDisc(amount[k],price[k]);} UDiscKey key[]=new UDiscKey[4];for(int k=0;k<key.length;k++) { key[k]=new UDiscKey(UDisc[k].amount);        } for(int k=0;k<UDisc.length;k++) { treemap.put(key[k],UDisc[k]);                 } int number=treemap.size(); Collection<UDisc> collection=treemap.values();Iterator<UDisc> iter=collection.iterator();while(iter.hasNext()) {UDisc disc=iter.next(); System.out.println(""+disc.amount+"G "+disc.price+"元");       } treemap.clear(); for(int k=0;k<key.length;k++) { key[k]=new UDiscKey(UDisc[k].price);       } for(int k=0;k<UDisc.length;k++) {treemap.put(key[k],UDisc[k]);       } number=treemap.size();collection=treemap.values();iter=collection.iterator();while(iter.hasNext()) {UDisc disc=iter.next(); System.out.println(""+disc.amount+"G "+disc.price+"元");}}}

转载于:https://www.cnblogs.com/musea/p/8993973.html

相关文章:

IE6的bug

内部系统 公司6楼正常&#xff0c;7楼不正常&#xff0c;一查系统没问题&#xff0c;7楼IE6&#xff0c;6楼是IE8 原因是系统接入第三方一个富客户端的程序&#xff0c;这个IE6不支持所以一直卡着。卡多了就挂了。 因为表象是还在卡着的网页浏览器一关重开就好了。。。。 而如…

python-sendcmd主动模式访问ftp——修改port中IP地址信息

用python访问ftp站点&#xff0c;主动模式发送port时&#xff0c;修改了IP地址&#xff0c;抓包分析网络会话信息。activesocket.py 1 #python for socket active mode 2 #!/usr/bin/python 3 # -*- coding: utf-8 -*- 4 import ftplib5 import os 6 import socket 7 impor…

「CSDN 2021年度 IT 技术影响力之星评选」活动报名倒计时!

“CSDN 2021年度IT技术影响力之星评选”活动自2021年12月6日启动以来受到了行业各界的关注以及企业和个人的积极响应&#xff0c;截止目前&#xff0c;已收到上千份参评报名。本次评选活动的第一阶段——企业/个人参与提名将于2022年1月30日结束&#xff0c;以真实数据为基础&a…

Spring Cloud入门教程 - Zuul实现API网关和请求过滤

简介 Zuul是Spring Cloud提供的api网关和过滤组件&#xff0c;它提供如下功能&#xff1a; 认证过滤压力测试Canary测试动态路由服务迁移负载均衡安全静态请求处理动态流量管理在本教程中&#xff0c;我们将用zuul&#xff0c;把web端的请求/product转发到对应的产品服务上&…

​谷歌大神 Jeff Dean 领衔,万字展望5大 AI 趋势

‍‍作者 | 学术头条来源 | 学术头条对于关心人工智能技术进展的读者来说&#xff0c;每年年底来自整个谷歌 research 团队撰写的年终总结&#xff0c;可谓是必读读物。今天&#xff0c;由谷歌大神 Jeff Dean 领衔&#xff0c;这份总结虽迟但到。出于知识传播目的&#xff0c;“…

php的webservice的wsdl的XML无法显示

php的webservice的因为wsdl有中文所以xml无法显示 可以用Nopepad 转码即可 以UTF-8无BOM编码

Journey源码分析三:模板编译

2019独角兽企业重金招聘Python工程师标准>>> 在Journey源码分析二&#xff1a;整体启动流程中提到了模板编译&#xff0c;这里详细说下启动流程 看下templates.Generate()源码: func Generate() error {compiledTemplates.Lock()defer compiledTemplates.Unlock()//…

linux中安装程序

实验&#xff1a;为 Linux 主机安装应用程序 环境&#xff1a;vmware workstation 14 . redhad-server-6.4需求&#xff1a;1.使用 RPM 包的方式安装 Mozilla Firefox 浏览器2.使用源代码包编译的方式安装 Apache3.使用 RPM 包的方式安装Webmin管理软件&#xff0c;并使用 rpm查…

php 的webservice类库NuSoap介绍

NuSOAP 是 PHP 环境下的 WEB 服务编程工具&#xff0c;用于创建或调用 WEB 服务。它是一个开源软件&#xff0c;当前版本是 0.9.5 &#xff0c;支持 SOAP1.1 、 WSDL1.1 &#xff0c;可以与其他支持 SOAP1.1 和 WSDL1.1 的系统互操作。 NuSOAP 完全由PHP语言编写&#xff0c;由…

我用 YOLOv5 做情感识别!

作者 | 陈信达来源 | DatawhaleAI技术已经应用到了我们生活中的方方面面&#xff0c;而目标检测是其中应用最广泛的算法之一&#xff0c;疫情测温仪器、巡检机器人、甚至何同学的airdesk中都有目标检测算法的影子。下图就是airdesk&#xff0c;何同学通过目标检测算法定位手机位…

Odoo 学习 【二】Environment 概览

Environment 参考链接: http://odoo-new-api-guide-line.readthedocs.io/en/latest/environment.html#environment 在新的API中&#xff0c;引入了环境的概念&#xff0c;它的主要目标是提供对游标、用户、模型、上下文、记录集、和缓存的封装。 有了这些&#xff0c;你没有必要…

php使用NuSoap产生webservice结合WSDL让asp.net调用

<?php require_once("nusoap-0.9.5/lib/nusoap.php"); //定义服务程序 function Add($a,$b){return $a$b;}//初始化服务对象 , 这个对象是类 soap_server 的一个实例 $soap new soap_server; //调用服务对象的 register 方法注册需要被客户端访问…

分享 10 个超实用的 Python 编程技巧

作者 | 欣一来源 | Python爱好者集中营今天小编来给大家分享几个Python的编程技巧&#xff0c;帮助你迅速完成地从小白到Python大神的蜕变。字典翻转首先我们来看字典的翻转&#xff0c;假设我们有下面类似的一个字典对象与数据car_dict { "brand":"Tesla"…

百度编辑器(1.4.3—net版)上传图片路径及其他配置

1&#xff1a;文件配置图&#xff1a; 2&#xff1a;文件夹配置图&#xff1a; 3&#xff1a;多余的功能删除&#xff08;懒人不想使用百度编辑器官网的自定义&#xff0c;而选择全部功能的直接下载&#xff0c;对于没用的功能可以注释掉&#xff0c;以后有需要就可以再拿出来用…

windows下配置redis集群,启动节点报错:createing server TCP listening socket *:7000:listen:Unknown error...

windows下配置redis集群&#xff0c;启动节点报错&#xff1a;createing server TCP listening socket *:7000:listen:Unknown error 学习了&#xff1a;https://blog.csdn.net/u014652744/article/details/71774171 竟然真的是需要bind 127.0.0.1 不同的机器为啥就不一样呢&am…

apache日志分析简介

对apache的日志分析做下简单的介绍,主要参考apache官网的Log Files,手册参照 http://httpd.apache.org/docs/2.2/logs.html一.日志分析 如果apache的安装时采用默认的配置,那么在/logs目录下就会生成两个文件,分别是access_log和error_log1.access_log access_log为访问日志,记…

Kotlin语法(基础)

一、基础语法&#xff1a; 1. 定义包名&#xff1a; 包名应该在源文件的最开头&#xff0c;包名不必和文件夹路径一致&#xff1a;源文件可以放在任意位置。 package my.demo 2. 定义函数&#xff1a; fun sum(a: Int , b: Int) : Int{return a b } 表达式函数体自动推断型的返…

未来十年,人机交互将是重要的发展

编译 | 禾木木出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;机器人市场包括广泛且不断扩大的产品范围。经过多年的合作&#xff0c;可以预测机器人技术和机器人行业的未来发展。根据需求&#xff0c;专业服务应用将占据主要市场份额。客户行为的变化已成为行业发展…

20170507Linux七周二次课 io监控free ps 网络状态 抓包

七周二次课&#xff08;5月7日&#xff09;10.6 监控io性能10.7 free命令10.8 ps命令10.9 查看网络状态10.10 linux下抓包扩展tcp三次握手四次挥手 http://www.doc88.com/p-9913773324388.htmltshark几个用法&#xff1a;http://www.aminglinux.com/bbs/thread-995-1-1.html监控…

navicat for mysql导出表结构

show create table cm_events;

《新程序员003》正式上市!华为、阿里等 30+ 公司的云原生及数字化实战经验...

作者 | 唐小引出品 | 《新程序员》编辑部《新程序员 003&#xff1a;云原生和全面数字化实践》图书今日正式上市&#xff0c;纸书和电子书同步上架 CSDN 商城、New 程序员小程序、京东、当当等平台。这是由 50 余位技术专家共同创作&#xff0c;写给所有关注云原生和数字化的开…

sed及awk显示指定行内容

文件内容为[roottest1 test]# cat file.test 1 2 3 4 5 6 7 8 9 101. 显示第二行内容(指定行)1&#xff09;sed[roottest1 test]# sed -n 2p file.test 22&#xff09;awk[roottest1 test]# awk NR2 {print $0} file.test 2 [roottest1 test]# awk {if(NR2)print $0} file.t…

win10 spark+scala+eclipse+sbt 安装配置

转载请务必注明原创地址为&#xff1a;http://dongkelun.com/2018/03/... 1、首先安装配置jdk1.8以上,建议全部的安装路径不要有空格 2、安装spark 2.1 下载 下载地址&#xff1a;http://spark.apache.org/downloads.html&#xff0c;我下载的是 spark-2.2.1-bin-hadoop2.7.tgz…

jquery的live方法

live(type, [data], fn)手册API的介绍 jQuery 给所有匹配的元素附加一个事件处理函数&#xff0c;即使这个元素是以后再添加进来的也有效。 如下用 live给classclickme的元素绑定一个click事件&#xff1a; $(.clickme).live(click, function() { alert("Live handler ca…

碱基序列的儿子最长上涨

Font Size:Aa Aa AaDescription 给出一个由n个数组成的序列x[1..n]&#xff0c;找出它的最长单调上升子序列的长度。即找出最大的长度m和a1, a2……,am&#xff0c;使得 a1 < a2 < … … < am 且 x[a1] < x[a2] < … … < x[am]。Input 先输入一个整数t&…

用 Python 写 3D 游戏,太赞了

作者 | 可可卷CSDN博客 | 可可卷vizard介绍Vizard是一款虚拟现实开发平台软件&#xff0c;从开发至今已走过十个年头。它基于C/C&#xff0c;运用新近OpenGL拓展模块开发出的高性能图形引擎。当运用Python语言执行开发时&#xff0c;Vizard同时自动将编写的程式转换为字节码抽象…

人人都能学会的python编程教程3:字符串和编码

字符串 在python3中已经全面支持中文。 由于Python源代码也是一个文本文件&#xff0c;所以&#xff0c;当你的源代码中包含中文的时候&#xff0c;在保存源代码时&#xff0c;就需要务必指定保存为UTF-8编码。当Python解释器读取源代码时&#xff0c;为了让它按UTF-8编码读取&…

基本MVC原理

参考《Pro PHP》 简单实现了一个mvc框架。 地址http://code.google.com/p/smallframework/自动加载的问题<?php function __autoload($class) { if(file_exists($class.".php")) { require_once($class.".php"); } } class autoload{ public static fu…

31个好用的 Python 字符串方法,建议收藏!

作者 | 小F来源 | 法纳斯特字符串是Python中基本的数据类型&#xff0c;几乎在每个Python程序中都会使用到它。今天&#xff0c;就带大家学习一下31个最重要的内置字符串方法。希望大家能从中找到对自己有帮助的技巧。▍1、Slicingslicing切片&#xff0c;按照一定条件从列表或…

《深入理解计算机系统》读书随笔-位操作

最近开始读《深入理解计算机系统》这本书。对于书中提到的从程序员的角度解读计算机系统这一说法非常感兴趣&#xff0c;所以决定好好读一读。从开始接触计算机编程就是站在一个高级语言的层次&#xff0c;虽然对编译原理&#xff0c;操作系统&#xff0c;汇编语言和计算机组成…