package cn.aust.zyw.demo;

import java.util.Iterator;

/**
* Created by zyw on 2016/2/17.
*/
public class BagTest {
public static void main(String args[]){
Bag<Double> bag=new Bag<Double>();
for(int i=0;i<4;i++){
bag.add(i*1.0);
}
int N=bag.size();
double sum=0.0;
/*for(double x:bag){
sum+=x;
}*/
for(Iterator<Double> iter = bag.iterator();iter.hasNext();){
sum=sum+iter.next();
}
double mean=sum/N;
System.out.printf(sum+" ");
System.out.printf(mean+""); }
}
package cn.aust.zyw.demo;

import java.util.Iterator;

/**
* Created by zyw on 2016/2/17.
*/
public class Bag<T> implements Iterable<T> {
private LinkedList<T> myList;
private int size=0;
Bag(){
myList=new LinkedList<T>();
}
void add(T item){
myList.add(item);
++size;
} boolean isEmpty(){
return (myList.size==0);
}
int size(){
return size;
} @Override
public Iterator<T> iterator() {
return new Iterator<T>(){
public int i=0,k=0;
@Override
public boolean hasNext() {
if(i<size()){
i++;
return true; }
return false;
} @Override
public T next() {
return myList.get(k++);
}
};
}
}
package cn.aust.zyw.demo;

/**
* Created by zyw on 2016/2/17.
*/
public class LinkedList<E> {
public Node<E> header=null;
public Node<E> end=null;
int size=0;
public LinkedList(){
this.header=new Node<E>();
}
/**
* 添加新的节点
* */
public boolean add(E e){
//这里从header就是其中的一个节点
if(size==0){
header.e=e;
end=header;
}else{
Node<E> newnode=new Node<E>(e);
end.addNext(newnode);
end=newnode;
}
size++;
return true;
} /**
* 根据索引得到该节点的值
* */
public E get(int index){
return getNode(index).e;
}
/**
* 根据index得到该节点
* */
private Node<E> getNode(int index){
if(index<0||index>size-1)//从第0个开始算起
throw new RuntimeException("当前index值错误:"+index);
Node<E> temp=new Node<E>();
temp=header;
int count=0;
while(index!=count){
temp=temp.next;
count++;
}
return temp;
}
/*
* 用来存放数据的节点型内部类
* */
private class Node<e>{
private E e;
Node<E> next=null;
Node(){}
Node(E e){
this.e=e;
}
//可以用这个简化
void addNext(Node<E> node){
this.next=node;
}
}
}

BagTest的更多相关文章

  1. Hibernate的映射文件

    映射文件的结构和属性 一个映射文件(mapping file)由一个根节点<hibernate-mapping>和多个<class>节点组成, 首先看看根节点<hiber ...

  2. 20162330 第三周 蓝墨云班课 泛型类-Bag 练习

    目录 题目及要求 思路分析 遇到的问题和解决过程 代码实现及托管链接 感想 参考资料 题目及要求 代码运行在命令行中,路径要体现学号信息,IDEA中,伪代码要体现个人学号信息: 参见Bag的UML图, ...

  3. Bag类课后作业

    20162316 Bag课后作业 下面小标题都是码云链接 实现代码 import java.util.Arrays; public class Bag implements BagInterface ...

  4. 20162328蔡文琛 Bag类

    在刚刚开始着手这个作业时,想的是使用for循环来自己写出add等方法来,但是在看过API后知道了Arraylist这个java已有的列表类,于是就只用ArrayList的方法很快的就做了出来.在进行B ...

  5. Bag类的接口的实现与测试(课上测试补做)

    Bag类的接口的实现与测试(课上测试补做) 截图 由于截图有一定的的限制就没有吧所有的代码截进去,后面有代码. 代码 package ClassTest; import java.util.Objec ...

  6. 课堂作业-Bag类的实现

    课堂作业-Bag类的实现 要求: 代码运行在命令行中,路径要体现学号信息,IDEA中,伪代码要体现个人学号信息 参见Bag的UML图,用Java继承BagInterface实现泛型类Bag,并对方法进 ...

随机推荐

  1. Axiom3D学习日记 5.Frame Listeners, and Input Handling

    Frame Listeners In Ogre's C++, we would register a class to receive notification before and after a ...

  2. Android端上传图片到后台,存储到数据库中 详细代码

    首先点击头像弹出popwindow,点击相册,相机,调用手机自带的裁剪功能,然后异步任务类访问服务器,上传头像,保存到数据库中, 下面写出popwindow的代码 //设置popwindow publ ...

  3. Android Activity各启动模式的差异

    Activity共有四种启动模式:standard,singleTop,singleTask,singleInstance 为了方便描述和理解,布局文件.Manifest文件和各个java文件如下: ...

  4. Android 巧妙实现图片和文字上下布局或者左右布局

    最近去了一家新公司,然后开始做新的项目,看其代码发现了一个很巧妙的方法来实现图片在上面文字在下面的布局方式.只需要一个控件——RadioButton. 布局文件很简单,用来展示RadioBUtton的 ...

  5. 使用Sqlite数据库存储数据

    1.Sql基本命令 1.1.创建表 表是有行和列组成的,列称为字段,行称为记录. 使用CREATE命令来创建表: 1 CREATE TABLE tab_student (studentId INTEG ...

  6. Android开发app如何设定应用图标下的应用名称为汉字以及自定义图标

    一.应用名称为汉字 二.自定义图标

  7. phpcms V9 数据模型基类(转)

    转自:http://www.cnblogs.com/Braveliu/p/5100421.html 在学习<phpcms V9首页模板文件解析>的第七步,我们看到content_model ...

  8. nodejs初体验

    安装好nodejs之后 在命令行中直接运行:node -v //若安装成功则显示版本号 var http = require('http'); http.createServer(function ( ...

  9. html 中 #include file 的用法

    有两个文件a.htm和b.htm,在同一目录下a.htm内容如下 <!-- #include file="b.htm" --> b.htm内容如下 今天:雨 31 ℃- ...

  10. linux 定时执行shell

    第一步:安装 crontab ,命令 yum -y install vixie-cron                扩展:service crond start //启动服务            ...