Java学习第36天--Stream,综合案例

千锋逆战班:孙华建
在千锋学习第36天
“未来的你会感谢今天奋斗的自己”
今天我学习了java课程Stream,SE综合案例----未完待续
#中国加油!武汉加油!千锋加油!也为自己加油!!!#…

Student类

package com.qf.project.entity;

public class Student {
	 private int id;
	 private String name;
	 private String className;
	 private int age;
	 private String gender;
	 private double javaScore;
	 private double htmlScore;
	 private double springScore;
	 private double totalScore;
	 
	 //无参
	 public Student() {}
	 
	 /**
	  * 提供基本信息的构造方法
	  * @param id
	  * @param name
	  * @param className
	  * @param age
	  * @param gender
	  */
	 public Student(int id, String name, String className, int age, String gender) {
		super();
		this.id = id;
		this.name = name;
		this.className = className;
		this.age = age;
		this.gender = gender;
	}
	 
	 /**
	  * 提供成绩的构造方法
	  * @param id
	  * @param name
	  * @param className
	  * @param age
	  * @param gender
	  * @param javaScore
	  * @param htmlScore
	  * @param springScore
	  *
	  */
	public Student(int id, String name, String className, int age, String gender, double javaScore, double htmlScore,
			double springScore) {
		this(id, name, className, age, gender);
		this.javaScore = javaScore;
		this.htmlScore = htmlScore;
		this.springScore = springScore;
		this.totalScore = javaScore+htmlScore+springScore;
	}

	public int getId() {
		return id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getClassName() {
		return className;
	}

	public void setClassName(String className) {
		this.className = className;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public String getGender() {
		return gender;
	}

	public void setGender(String gender) {
		this.gender = gender;
	}

	public double getJavaScore() {
		return javaScore;
	}

	public void setJavaScore(double javaScore) {
		this.totalScore -= this.javaScore;//先把原来的成绩剪掉
		this.javaScore = javaScore;//赋值
		this.totalScore += this.javaScore;//加上新成绩
	}

	public double getHtmlScore() {
		return htmlScore;
	}

	public void setHtmlScore(double htmlScore) {
		this.totalScore -= this.htmlScore;//先把原来的成绩剪掉
		this.htmlScore = htmlScore;//赋值
		this.totalScore += this.htmlScore;//加上新成绩
	}

	public double getSpringScore() {
		return springScore;
	}

	public void setSpringScore(double springScore) {
		this.totalScore -= this.springScore;//先把原来的成绩剪掉
		this.springScore = springScore;//赋值
		this.totalScore += this.springScore;//加上新成绩
	}
	
	//总分只能看不能改
	public double getTotalScore() {
		return totalScore;
	}

	@Override
	public String toString() {
		return "Student [id=" + id + ", name=" + name + ", className=" + className + ", age=" + age + ", gender="
				+ gender + ", javaScore=" + javaScore + ", htmlScore=" + htmlScore + ", springScore=" + springScore
				+ ", totalScore=" + totalScore + "]";
	}
	
	

}

StudentManager

package com.qf.project.manager;

import com.qf.project.entity.Student;

/**
 * 完成所有学生管理系统的相关功能
 * 逻辑代码
 * @author winter
 *
 */

public class StudentManager {
	
	/**
	 * 增加,采用尾插法
	 * @param stu
	 * @return,增加成功返回true,失败返回false
	 */
	public boolean add(Student stu) {
		return false;
	}
	
	/**
	 * 删除
	 * @param studentID,根据学生唯一的ID
	 * @return
	 */
	public Student remove(int studentID) {
		return null;
	}
	
	/**
	 * 根据学生ID修改
	 * @param studentID
	 * @return,成功返回true,失败返回false
	 */
	public boolean modify(int studentID) {
		return false;
	}
	
	/**
	 * 根据学生ID查找对应的学生
	 * @param studentID
	 * @return,查到返回学术对象,失败返回null
	 */
	public Student get(int studentID) {
		return null;
	}
	
	/**
	 * 查询所有,遍历集合
	 */
	public void get() {
		//打印所有学生信息
	}
	
}

MyList

package com.qf.project.util;

/**
 * 增加:
 * add(E e);
 * add(int index,E e);
 * 删除:
 * remove(E e);
 * remove(int index);
 * 改:
 * set(int index,E e);
 * 获取:
 * int size();
 * Object[] toArray();
 * boolean isEmpty();
 * boolean contains(Object o);
 * MyArrayList<E> subList(int start,int end);
 * int indexOf(Object o);
 * int lastIndexOf(Object o);
 * E get(int index);
 * @author winter
 *
 * @param <E>  泛型 应用在不同类型下,作为集合
 */
public interface MyList<E> {
	/**
	 * 添加方法,添加元素到集合末尾
	 * @param e泛型
	 * @return true成功    false失败
	 */
	boolean add(E e);
	/**
	 * 添加方法,指定下标位置进行添加
	 * @param index 指定的下标位置
	 * @param e 元素 泛型
	 * @return true成功  false失败
	 */
	boolean add(int index,E e);
	/**
	 * 移除方法,指定移除的元素
	 * @param o 元素
	 * @return 移除的元素
	 */
	E remove(Object o);
	/**
	 * 移除方法,指定移除的下标
	 * @param index 指定的下标
	 * @return 移除的元素
	 */
	E remove(int index);
	/**
	 * 覆盖方法,替换指定下标的元素
	 * @param index 下标
	 * @param e 替换的元素
	 * @return 被替换的元素
	 */
	E set(int index,E e);
	/**
	 * 获取集合中有效元素的个数
	 * @return 有效元素的个数
	 */
	int size();
	/**
	 * 获得当前集合中,所有元素的Object类型的数组
	 * @return Object[] 包含集合中所有的对象
	 */
	Object[] toArray();
	/**
	 * 判断当前集合是否为空
	 * @return 如果一个元素都没有,返回true,有元素返回false
	 */
	boolean isEmpty();
	/**
	 * 判断某个对象o,在集合中是否存在
	 * @param o 需要查找的对象
	 * @return 存在返回true,不存在返回false
	 */
	boolean contains(Object o);
	/**
	 * 根据需求,返回start到end之间的MyList集合的子集合
	 * @param start 要求有效下标的范围,不能超过end
	 * @param end要求有效下标的范围,不能小于等于start
	 * @return 数据符合要求,返回一个当前集合的子集合。若数据不符合要求,返回NULL
	 */
	MyList<E> subList(int start,int end);
	/**
	 * 获得指定元素在集合中第一次出现的位置
	 * @param o 指定的元素
	 * @return 找到返回值 返回下标,没找到返回-1
	 */
	int indexOf(Object o);
	/**
	 * 获取指定元素在集合中最后一次出现的位置
	 * @param o指定的元素
	 * @return 找到返回值 返回下标,没找到返回-1
	 */
	int lastIndexOf(Object o);
	/**
	 * 根据指定的下标位置,获得元素
	 * @param index 下标
	 * @return 元素对象
	 */
	E get(int index);
	
	
	
	
	
	
	
}


MyArrayList

package com.qf.project.util.impl;

import java.util.Arrays;

import com.qf.project.util.MyList;

public class MyArrayList<E> implements MyList<E> {
	//1.保存任意类型数据的数组,集合的底层
	private Object[] elementData = null;
	//2.集合初始容量
	private static final int DEFAULT_CAPACITY=10;
	//3.保存数组中有效元素个数 (下一个元素插入的下标)
	private int size = 0; 
	
	public  MyArrayList() {
//		elementData = new Object[DEFAULT_CAPACITY];
		/*
		 * 统一化当前集合页的初始化方式
		 */
		this(DEFAULT_CAPACITY);
	}
	/**
	 * 手工初始化集合的容量
	 * @param initCapacity 传入的容量大小:要求传入的容量大于0并且小于Integer.MAX_VALUE -8
	 */
	public MyArrayList(int initCapacity) {
		//判断 initCapacity是否符合要求
		if(initCapacity <0 || initCapacity > Integer.MAX_VALUE - 8) {
			throw new IllegalArgumentException("传递了一个不符合规范的初始容量!:"+initCapacity);
//			elementData = new Object[DEFAULT_CAPACITY]; 错误的! 
		}else {
			elementData = new Object[initCapacity];
		}
	}
	
	public boolean add(E e) {
		if(size == elementData.length) {//数组是否满了
			//满了就扩容!
			grow(size + 1);
		}
		elementData[size] = e;
		size++;
		return true;
	}
	/**
	 * 为底层数组elementData做扩容!
	 * @param minCapacity 扩容需要得最小容量!
	 */
	private void grow(int minCapacity) {
		int oldCapacity = elementData.length;
		int newCapacity = oldCapacity + (oldCapacity >> 1);//要扩容的大小
		
		if(newCapacity > Integer.MAX_VALUE-8) {
			throw new OutOfMemoryError("集合溢出了!");
		}
		if(newCapacity - minCapacity == 0) {
			
			newCapacity = minCapacity;
		}
		/*
		 * 1、创建新数组
		 * 2.拷贝元数据到新数组
		 * 3.返回新数组的首地址
		 * 4,替换
		 */
		elementData = Arrays.copyOf(elementData,newCapacity);
	}

	@Override
	public boolean add(int index, E e) {
		checkIndex(index);//1.先判断下标是否合理.不合理,抛异常,程序因异常而终止
		if(size == elementData.length) {
			grow(size + 1);
		}
		/*
		 * 1 3 10 5 7 9
		 * index = 2; num = 10
		 * 
		 */
		for(int i = size;i > index; i--) {
			elementData[i] = elementData[i-1];
		}
		elementData[index] = e;
		size++;
		return true;
	}
	/**
	 * 指定下标的安全检查!下标值不符合要求就抛异常
	 * @param index  下标
	 */
	private void checkIndex(int index) {
		if(index<0 ||index >=size) {
			throw new ArrayIndexOutOfBoundsException(index);
		}
	}
	@Override
	public E remove(Object o) {
		return null;
	}

	@Override
	public E remove(int index) {
		return null;
	}

	@Override
	public E set(int index, E e) {
		return null;
	}

	@Override
	public int size() {
		return size;
	}

	@Override
	public Object[] toArray() {
		return null;
	}

	@Override
	public boolean isEmpty() {
		return false;
	}

	@Override
	public boolean contains(Object o) {
		return false;
	}

	@Override
	public MyList<E> subList(int start, int end) {
		return null;
	}

	@Override
	public int indexOf(Object o) {
		return 0;
	}

	@Override
	public int lastIndexOf(Object o) {
		return 0;
	}

	@Override
	public E get(int index) {
		checkIndex(index);//检查下标
		return (E)elementData[index];//返回指定下标的元素
	}

}

SystemMain

package com.qf.project.menu;

import com.qf.project.entity.Student;
import com.qf.project.util.MyList;
import com.qf.project.util.impl.MyArrayList;

public class SystemMain {

	public static void main(String[] args) {
		
		MyList<Student> list = new MyArrayList<Student>();
		Student stu = new Student(1,"孙华建","BK2002",24,"男");
		list.add(stu);
		list.add(new Student(2,"小明","BK2002",23,"男"));
		list.add(new Student(2,"小华","BK2002",22,"女"));
		list.add(new Student(2,"小红","BK2002",23,"女"));
		
		for(int i = 0;i<list.size();i++) {
			System.out.println(list.get(i));
		}
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值