Java实习二

链表(java实现)

Link.java

public class Link{
    private Node first;
    public Link(){
        this.first = null;
    }
    //判断是否为空
    public boolean isEmpty(){
        if(this.first == null)
            return true;
        return false;
    }
    //插入头结点
    public void insertHeadNode(int data){
        Node tmp = new Node(data);
        if(this.first == null)
            first = tmp;
        else
        {
            tmp.setNext(first.getNext());
            first.setNext(tmp);
        }
        return ;
    }
    //在第index下插入data节点
    public void insertNode(int data, int index){
        Node p = this.first;
        int cnt = 0;
        while(cnt != index){
            p = p.getNext();
            cnt++;
        }
        Node newNode = new Node(data);
        newNode.setNext(p.getNext());
        p.setNext(newNode);
        return ;

    }
    //delete the head node
    public Node deleteHeadNode(){
        Node tmp = first;
        this.first = tmp.getNext();
        return tmp;
    }
    //find the data in the link
    public Node findNode(int data){
        Node p = this.first;
        while(p != null){
            if(p.getData() == data)
                return p;
            if(p == null)
                break;
            p = p.getNext();
        }
        return null;
    }
    //display the link
    public void displayLink(){
        Node p = first;
        while(p != null){
            System.out.println(p.getData());
            p = p.getNext();
        }
        return ;
    }
}

Node.java

public class Node{
    private int data;
    private Node next;
    //construction
    public Node(){
        this.data = 0;
        this.next = null;
    }
    public Node(int data){
        this.data = data;
        this.next = null;
    }
    //get
    public Node getNext(){
        return this.next;
    }
    public int getData(){
        return data;
    }

    //set
    public void setNext(Node next){
        this.next = next;
    }
    public void setData(int data){
        this.data = data;
    }
    //show
    public void nodeDisplay(){
        System.out.println("{"+data+"}");
    }
}

TestOfNode.java

public class TestOfNode{
    public static void main(String[] args){
        //test of Node
        Node tmp1 = new Node(100);
        tmp1.nodeDisplay();

        Link tmp2 = new Link();
        //test of insertHeadNode & displayLink
        tmp2.insertHeadNode(00);
        tmp2.displayLink();
        //test of isEmpty
        System.out.println(tmp2.isEmpty());
        System.out.println("+++++\n\n");
        //test of insertNode
        tmp2.insertNode(11,0);
        tmp2.insertNode(22,1);
        tmp2.insertNode(33,2);
        tmp2.insertNode(44,3);
        tmp2.insertNode(55,4);
        tmp2.insertNode(66,5);
        tmp2.displayLink();
        //test of delete the head Node
        System.out.println("++++");
        tmp2.deleteHeadNode();
        tmp2.displayLink();
        //test of find the data
        if(tmp2.findNode(3310)!=null){
            System.out.println("truely find the data:" + 3310);
        }else{
            System.out.println("fasle");
        }

        System.out.println("++++++");

        //test of InsertHeadNode
        tmp2.insertHeadNode(1111);
        tmp2.insertHeadNode(2222);
        tmp2.insertHeadNode(3333);
        tmp2.displayLink();
    }
}

排序 - 国家金牌银牌铜牌分别排序

TestOfNode.java

public class TestOfNode{
    public static void main(String[] args){
        //test of Node
        Node tmp1 = new Node(100);
        tmp1.nodeDisplay();

        Link tmp2 = new Link();
        //test of insertHeadNode & displayLink
        tmp2.insertHeadNode(00);
        tmp2.displayLink();
        //test of isEmpty
        System.out.println(tmp2.isEmpty());
        System.out.println("+++++\n\n");
        //test of insertNode
        tmp2.insertNode(11,0);
        tmp2.insertNode(22,1);
        tmp2.insertNode(33,2);
        tmp2.insertNode(44,3);
        tmp2.insertNode(55,4);
        tmp2.insertNode(66,5);
        tmp2.displayLink();
        //test of delete the head Node
        System.out.println("++++");
        tmp2.deleteHeadNode();
        tmp2.displayLink();
        //test of find the data
        if(tmp2.findNode(3310)!=null){
            System.out.println("truely find the data:" + 3310);
        }else{
            System.out.println("fasle");
        }

        System.out.println("++++++");

        //test of InsertHeadNode
        tmp2.insertHeadNode(1111);
        tmp2.insertHeadNode(2222);
        tmp2.insertHeadNode(3333);
        tmp2.displayLink();
    }
}

Test.java

import java.util.Arrays;

public class Test{
    public static void main(String[] args){
        Country American = new Country(46,37,38);
        Country English = new Country(27,23,17);
        Country China = new Country(26,18,26);
        Country Russia = new Country(19,18,19);
        Country Germany = new Country(17,10,15);        

        Country[] countrys = new Country[5];
        countrys[0] = American;
        countrys[1] = English;
        countrys[2] = China;
        countrys[3] = Russia;
        countrys[4] = Germany;
        Arrays.sort(countrys);
        for(Country cty:countrys)
            System.out.println(cty.gold + " " + cty.silver + " " + cty.copper + " " + cty.sum);

    }
}

Coffee 类 - 面向对象编程

Coffee.java

package coffee;

//增加的方法
abstract class AddImplement{
    private String name;
    public void setName(String name){
        this.name = name;
    }
    public String getName(){
        return this.name;
    }
    public abstract void add();
}
class AddSugarImplement extends AddImplement{
    public void add(){
        System.out.println("you have added the Sugar^_^");
    }
}
class AddMilkImplement extends AddImplement{
    public void add(){
        System.out.println("you have added the Milk ^_^");
    }
}
//抽象类的实现
public abstract class Coffee{
    private AddImplement addimpl;
    //然后在调用add进行输出
    public void add(){
        addimpl.add();
    };
    //应该先调用这个设置函数
    public void setAddImpl(AddImplement addimpl){
        this.addimpl = addimpl;
    };
}

class InstantCoffee extends Coffee{
    public void setAddImpl(AddImplement addimpl){
        System.out.println("This is an InstantCoffee^_^");
        super.setAddImpl(addimpl);
    }
}

class LatteCoffee extends Coffee{
    public void
    setAddImpl(AddImplement addimpl){
        System.out.println("This is a LatteCoffee^_^");
        super.setAddImpl(addimpl);
    }
}

class MochaCoffee extends Coffee{
    public void setAddImpl(AddImplement addimpl){
        System.out.println("This is a MochaCoffee^_^");
        super.setAddImpl(addimpl);
    }
}

MainTest.java

package coffee;

import java.util.Scanner;
public class MainTest {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String choice = new String();
        String addsth = new String();
        while(true){
        System.out.println("What kind of coffe would you want ?");
        choice = in.nextLine();
        System.out.println("What would you like to add ?Sugar or Milk?");
        addsth = in.nextLine();
        if(choice.equals("InstantCoffee")){
            Coffee c1 = new InstantCoffee();
            if(addsth.equals("Sugar")){
                AddImplement a1 = new AddSugarImplement();
                c1.setAddImpl(a1);
                c1.add();
            }else if(addsth.equals("Milk")){
                AddImplement a2 = new AddMilkImplement();
                c1.setAddImpl(a2);
                c1.add();
            }else{
                System.out.println("Sorry,we don't have this kind of things *_*");
            }
        }else if(choice.equals("LatteCoffee")){
            Coffee c1 = new LatteCoffee();
            if(addsth.equals("Sugar")){
                AddImplement a1 = new AddSugarImplement();
                c1.setAddImpl(a1);
                c1.add();
            }else if(addsth.equals("Milk")){
                AddImplement a2 = new AddMilkImplement();
                c1.setAddImpl(a2);
                c1.add();
            }else{
                System.out.println("Sorry,we don't have this kind of things *_*");
            }
        }else if(choice.equals("MochaCoffee")){
            Coffee c1 = new MochaCoffee();
            if(addsth.equals("Sugar")){
                AddImplement a1 = new AddSugarImplement();
                c1.setAddImpl(a1);
                c1.add();
            }else if(addsth.equals("Milk")){
                AddImplement a2 = new AddMilkImplement();
                c1.setAddImpl(a2);
                c1.add();
            }else{
                System.out.println("Sorry,we don't have this kind of things *_*");
            }
        }else{
            System.out.println("We don't have this kind of Coffee*_*");
        }
        }

    }

}

模拟一个文件复制过程

Test.java

package test;

//系统成分类
abstract class attribute{
    int cnt;
//  public abstract void operation1();
    public abstract void output();
    public abstract void copy();
    public abstract void traverseDirectory();
}
//目录类
class Folder extends attribute{
    private attribute [] parts = new attribute[100];
    private String name;
    public int cnt = 0;
    private int index = 0;
    //构造函数部分
    Folder(){}
    Folder(String name){
        this.name = name;
    }
    //复制操作
//  public void operation1(){
//      System.out.println("复制文件:" + name);
//  }
    public void output(){
        System.out.println("+" + name);
    }
    public void add(Folder name){
        parts[index] = name;
        index++;
        name.cnt = this.cnt + 1;
    }
    public void add(File name){
        parts[index] = name;
        index++;
        name.cnt = this.cnt + 1;
    }
    public boolean remove(attribute a){
        for(int i = 0 ; i < index ;i++){
            if(parts[i].equals(a)){
                parts[i] = null;
                return true;
            }
        }
        return false;
    }
    //有几个操作
    public int getchild(){
        return index;
    }
    //遍历操作
    public void traverseDirectory(){
        this.output();
        for(int i = 0 ; i < index; i++){
            for(int k = 0 ; k <= this.cnt; k++){
                System.out.print("    ");
            }
            this.parts[i].traverseDirectory();
        }
    }
    public void copy(){
        System.out.println("复制文件:" + name);
        for(int j = 0 ; j < this.index ;j++){
            this.parts[j].copy();
        }
    }
}
//文件类
class File extends attribute{
    public String name;
    public int cnt = 0;
    File(String name){
        this.name = new String(name);
    }
    public void output(){
        System.out.println("-" + name);
    }
    public void copy(){
        System.out.println("复制文件:" + name);
    }
//  public void operation1(){
//      System.out.println("复制文件:" + name);
//  }
    public void traverseDirectory(){
        this.output();
    }
}

public class Test{
    public static StringBuffer st = new StringBuffer();
    public static void main(String[] args){
        Folder document = new Folder("我的资料");
        File book = new File("Java编程思想.pdf");
        Folder music = new Folder("我的音乐");
        File music1 = new File("你是我的眼.mp3");
        File music2 = new File("Without You.mp3");
        Folder picture = new Folder("我的照片");
        File pic1 = new File("我在美国白宫的照片");
        File pic2 = new File("我在新加坡的照片");
        File pic3 = new File("我在南极的照片");
        File pic4 = new File("我在南非的照片");
        File pic5 = new File("我与习大大的合影");

        document.add(book);
        document.add(music);
        music.add(music1);
        music.add(music2);
        picture.add(pic1);
        picture.add(pic2);
        picture.add(pic3);
        picture.add(pic4);
        picture.add(pic5);

        document.copy();
        System.out.println("-------------------------------");
        document.traverseDirectory();
        picture.traverseDirectory();
    }
}
时间: 2024-10-17 20:11:02

Java实习二的相关文章

从零基础到拿到网易Java实习offer,我做对了哪些事

作为一个非科班小白,我在读研期间基本是自学Java,从一开始几乎零基础,只有一点点数据结构和Java方面的基础,到最终获得网易游戏的Java实习offer,我大概用了半年左右的时间.本文将会讲到我在这半年里做对了哪些事情. 前言 研究生时期的方向选择 对于即将读研的同学来说,一般有两件事很重要,一件事是选择导师,一件事是选择方向. 我就读于华中科技大学,主修软件工程专业,我在刚读研的时候最头疼的也是这两件事情.首先说明一下,我读的是专硕,所以实验室一般不搞科研,有部分导师会带项目,由于我不打算在

Spark用Java实现二次排序的自定义key

本人在研究Spak,最近看了很多网上的对于SPARK用Java实现二次排序的方法,对于自定义key的做法 基本上都是实现Ordered<>接口,重写$greater.$greater$eq.$less.$less$eq.compare.compareTo方法,定义hashCode.equals····· 感觉好麻烦,其实我们自定义key只是用了里面的compareTo方法,其他的$greater.$greater$eq.$less.$less$eq.compare 不用做任何改动,hashCo

Java实现二维码技术探讨。

Java生成二维码方法有三种: 1: 使用SwetakeQRCode在Java项目中生成二维码 http://swetake.com/qr/ 下载地址 或着http://sourceforge.jp/projects/qrcode/downloads/28391/qrcode.zip 这个是日本人写的,生成的是我们常见的方形的二维码 能够用中文 如:5677777ghjjjjj 2: 使用BarCode4j生成条形码和二维码 BarCode4j网址:http://sourceforge.net/

Java实验二实验报告:java面向对象程序设计

java实验二实验报告 实验内容 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初步掌握UML建模 4. 熟悉S.O.L.I.D原则 5. 了解设计模式 实验要求 1.没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器> 课程 2.完成实验.撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等).解决办法(空洞的方法如“查网络”.“问

java 生成 二维码 和jquery 生成二维码

生成二维码 Java 生成二维码: 思路为拿到jar 包知道里面的方法使用 Step one : 在https://github.com/zxing中下载(点击网页中名为 zxing 的a标签,跳转到源码页面,点击release 查看所有发布的源码,下载zip压缩文件 Step two:  解压文件后打开文件夹,将core包和javase包 中的com包拷贝到一java项目src目录下.右键导出 jar file  得到一个二维码开发的jar包 Step three: 进行二维码制作 impor

JAVA笔记二

JAVA笔记二 常量:表示不可改变的值 变量:将不确定的数据进行存储也就是需要在内存中开辟一个空间 如何开辟内存空间? 就是通过明确的的数据类型 变量名称 数据来完成 Integer.toBinaryString(number); JAVA提供转换二进制的方法; number表示转换成二进制的数字 两个变量不通过第三个变量进行两个值得交换 1.int a=3,b=8; a=a+b; a=a-b; b=a-b; 此方法有局限性比如说a+b的大于2^32-1就会出现错误 我们可以通过异或运算来进行交

Java学习:二 基础

2014 - 5 - 22 上午 Java对大小写敏感. 点号(.)用于调用方法,Java的能用语法是: object.method(parameters); Java中的常量声明使用final关键字.且仅能赋值一次.习惯上,常量名大写. 可使用static final 定义一个类常量,以便在一个类中的多个方法中使用. 类常量定义在main方法外部,以便同一类其它方法可以使用.若使用public关键字,则其它类的方法也可以使用此常量. 字符串: Java中,允许使用+号拼接两个字符串. Java

Java进阶(二十五)Java连接mysql数据库(底层实现)

Java进阶(二十五)Java连接mysql数据库(底层实现) 前言 很长时间没有系统的使用java做项目了.现在需要使用java完成一个实验,其中涉及到java连接数据库.让自己来写,记忆中已无从搜索.特将之前使用的方法做一简单的总结.也能够在底层理解一下连接数据库的具体步骤. 实现 首先需要导入相关的jar包,我使用的为:mysql-connector-java-5.1.7-bin.jar. 下面来看一下我所使用的数据库连接方法类: MysqlUtil.java package cn.edu

菜鸟学Java(二十)——你知道long和Long有什么区别吗?

Java中数据类型分两种: 1.基本类型:long,int,byte,float,double2.对象类型:Long,Integer,Byte,Float,Double其它一切java提供的,或者你自己创建的类. 其中Long叫 long的包装类.Integer.Byte和Float也类似,一般包装类的名字首写是数值名的大写开头. 什么是包装类? 在java中有时候的运算必须是两个类对象之间进行的,不充许对象与数字之间进行运算.所以需要有一个对象,这个对象把数字进行了一下包装,这样这个对象就可以