设计一个泛型类orderedCollection
设计一个泛型类orderedCollection,它存储的Comparable对象的集合(在数组中),以及该集合的当前大小。提供public方法isEmpty,makeEmpty,insert,remove,findMin和 findMax。
finfMin和findMax分别返回该集合中最小的和最大T对象的引用(如果该集合为空,则返回null)
/**
* <p>
* 设计一个泛型类orderedCollection,它存储的Comparable对象的集合(在数组中),
* 以及该集合的当前大小。提供public方法isEmpty,makeEmpty,insert,remove,findMin和
* findMax。finfMin和findMax分别返回该集合中最小的和最大T对象的引用(如果该集合为空,则返回null)
* </p>
*
* @author wangchao
*
* @version 1.0.0
*
* @since 1.0.0
*
*/
public class OrderedCollection {
private Comparable[] obj;
private int length; public int getLength() {
return obj.length;
} public void setLength(int length) {
this.length = length;
} public Comparable[] getObj() {
return obj;
} public void setObj(Comparable[] obj) {
this.obj = obj;
} public void makeEmpty() {
obj = new Comparable[] {};
} public Comparable findMin() {
if (obj.length == 0) {
return null;
}
int min = 0;
for (int i = 1; i < obj.length; i++) {
if (obj[i].compareTo(obj[min]) <= 0) {
min = i;
}
}
return obj[min];
} public Comparable findMax() {
if (obj.length == 0) {
return null;
}
int max = 0;
for (int i = 1; i < obj.length; i++) {
if (obj[i].compareTo(obj[max]) > 0) {
max = i;
}
}
return obj[max];
} public boolean isEmpty() {
return obj.length > 0 ? false : true;
}; public void insert(Comparable o) {
// 扩展数组容量
Comparable[] temp = new Comparable[obj.length + 1];
// 拷贝原有数组
for (int i = 0; i < obj.length; i++) {
temp[i] = obj[i];
}
// 末位添加新元素
temp[obj.length] = o;
obj = temp;
} public boolean isPresent(Comparable o) {
if (obj.length == 0) {
return false;
}
// 遍历判断
for (Comparable ob : obj) {
if (o.equals(ob))
return true;
}
return false;
} /**
* <p>
* 此处写的很复杂,应该有更简单的方法实现
* </p>
*/
public void remove(Comparable o) {
if (obj.length == 0) {
return;
}
int count = 0;
for (int i = 0; i < obj.length; i++) {
if (o.equals(obj[i])) {
obj[i] = null;
count++;
}
} Comparable[] temp = new Comparable[obj.length - count];
int i = 0;
for (Comparable ob : obj) {
if (ob != null) {
temp[i] = ob;
i++;
}
}
obj = temp;
} public static void main(String[] args) {
OrderedCollection oc = new OrderedCollection();
Comparable[] obj = new Comparable[] { 12, 4, 6, 2, 68 };
oc.setObj(obj);
System.err.println(oc.findMin());
System.err.println(oc.getLength());
} }
设计一个泛型类orderedCollection的更多相关文章
- 设计一个泛型类Collection
要求:设计一个泛型类Collection,它存储object对象的集合(在数组中),以及该集合当前的大小.提供public方法isEmtpy,makeEmpty,insert,remove,isPre ...
- ABP框架 - 介绍 VS2017调试器无法附加到IIS进程(w3wp.exe) c# 动态实例化一个泛型类
ABP框架 - 介绍 在14,15年间带领几个不同的团队,交付了几个项目,在这个过程中,虽然几个项目的业务不一样,但是很多应用程序架构基础性的功能却是大同小异,例如认证.授权.请求验证.异常处理. ...
- 如何一步一步用DDD设计一个电商网站(九)—— 小心陷入值对象持久化的坑
阅读目录 前言 场景1的思考 场景2的思考 避坑方式 实践 结语 一.前言 在上一篇中(如何一步一步用DDD设计一个电商网站(八)—— 会员价的集成),有一行注释的代码: public interfa ...
- 如何一步一步用DDD设计一个电商网站(八)—— 会员价的集成
阅读目录 前言 建模 实现 结语 一.前言 前面几篇已经实现了一个基本的购买+售价计算的过程,这次再让售价丰满一些,增加一个会员价的概念.会员价在现在的主流电商中,是一个不大常见的模式,其带来的问题是 ...
- 如何一步一步用DDD设计一个电商网站(十)—— 一个完整的购物车
阅读目录 前言 回顾 梳理 实现 结语 一.前言 之前的文章中已经涉及到了购买商品加入购物车,购物车内购物项的金额计算等功能.本篇准备把剩下的购物车的基本概念一次处理完. 二.回顾 在动手之前我对之 ...
- 如何一步一步用DDD设计一个电商网站(七)—— 实现售价上下文
阅读目录 前言 明确业务细节 建模 实现 结语 一.前言 上一篇我们已经确立的购买上下文和销售上下文的交互方式,传送门在此:http://www.cnblogs.com/Zachary-Fan/p/D ...
- 如何一步一步用DDD设计一个电商网站(六)—— 给购物车加点料,集成售价上下文
阅读目录 前言 如何在一个项目中实现多个上下文的业务 售价上下文与购买上下文的集成 结语 一.前言 前几篇已经实现了一个最简单的购买过程,这次开始往这个过程中增加一些东西.比如促销.会员价等,在我们的 ...
- 如何一步一步用DDD设计一个电商网站(五)—— 停下脚步,重新出发
阅读目录 前言 单元测试 纠正错误,重新出发 结语 一.前言 实际编码已经写了2篇了,在这过程中非常感谢有听到观点不同的声音,借着这个契机,今天这篇就把大家提出的建议一个个的过一遍,重新整理,重新出发 ...
- 如何一步一步用DDD设计一个电商网站(四)—— 把商品卖给用户
阅读目录 前言 怎么卖 领域服务的使用 回到现实 结语 一.前言 上篇中我们讲述了“把商品卖给用户”中的商品和用户的初步设计.现在把剩余的“卖”这个动作给做了.这里提醒一下,正常情况下,我们的每一步业 ...
随机推荐
- 如何在Eclipse中查看JDK以及JAVA框架的源码(转载)
原文链接:http://www.cnblogs.com/outlooking/p/5243415.html 设置步骤如下: 1.点 “window”-> "Preferences&qu ...
- LeetCode Fizz Buzz
原题链接在这里:https://leetcode.com/problems/fizz-buzz/ 题目: Write a program that outputs the string represe ...
- Python开发【杂货铺】:模块logging
logging模块 很多程序都有记录日志的需求,并且日志中包含的信息即有正常的程序访问日志,还可能有错误.警告等信息输出,python的logging模块提供了标准的日志接口,你可以通过它存储各种格式 ...
- vim - copy/paste a word
1. http://stackoverflow.com/questions/7797068/copying-a-word-and-pasting-over-a-word viwp - visually ...
- js贪吃蛇源码
1.注意,自己引入jquery,这个demo基于jquery的,我的jquery是写的本地的 2.没有写注释,看不懂的再问我吧, <!DOCTYPE html><html> & ...
- java版模拟浏览器下载百度动漫图片到本地。
package javaNet.Instance.ImageDownload; import java.io.BufferedReader; import java.io.File; import j ...
- tomcat 开机后台运行
引用:http://jingyan.baidu.com/article/a65957f4b12b8724e77f9b5a.html Tomcat是Apache 软件基金会(Apache Softwar ...
- ftp unable to fetch some archives,maybe run apt-get update or try with -- fix-missing?
引用:http://bbs.csdn.net/topics/340061850 先 apt-get update 再执行安装
- 加密connectionStrings
开始菜单>>所有程序>>Microsoft visual studio 2010 >> Visual Studio Tools >> Visual St ...
- linux 下链接无线网络
无线网卡配置此页由Linux Wiki用户Chenxing于2008年11月27日 (星期四) 09:28的最后更改. 在1233456的工作基础上.本文介绍在Linux命令行界面中手动配置无线网卡的 ...