Chp11 11.7
《Java语言程序设计》P327
题目要求使用数组来模拟实现ArrayList的一些方法,并要求可以根据实际长度来实现数组自动增长,这里只贴出LikeArrayList.java
测试方法已经在本地写过,有点杂乱就不再贴出。
缺陷:无法实现自增长;基于String为数组类型的设计,数组若为其他类型,有些方法会不能正常工作。
改进:判断数组类型,并作出相应的解决方案的写法已经想好,实现起来应该不难,但考虑到比较繁琐费时,不再添加。
Ps.LikeArrayList方法可以改写成:
public void LikeArrayList() {
Object[] ArrayLi = new Object[20];
ArrayLiLike = ArrayLi;
}
似乎没有什么变化,若实现自增长,可以尝试在LikeArrayList方法上做改动,还没想好解决方案。
话说回来,如果要实现自增长,为何不直接用java.util.ArrayList?
public class LikeArrayList {
private Object[] ArrayLiLike = new Object[20];
public void LikeArrayList() {
}
public void add(Object n){
int m =0;
for (int i = 0; i < ArrayLiLike.length; i++) {
if(ArrayLiLike[i] == null){
m = i;
break;
}
}
ArrayLiLike[m] = n;
}
public void add(int p , Object n){
ArrayLiLike[p] = n;
}
public void clear(){
for (int i = 0; i < ArrayLiLike.length; i++) {
ArrayLiLike[i] = null;
}
}
public boolean contains(Object h){
boolean c = false;
for (int i = 0; i < ArrayLiLike.length; i++) {
if (ArrayLiLike[i] == h) {
c = true;
}
}
return c;
}
public Object get(int b){
return ArrayLiLike[b];
}
public int indexOf(Object w){
int a = 0;
for (int i = 0; i < ArrayLiLike.length; i++) {
if(ArrayLiLike[i] == w){
a = i;
break;
}
}
return a;
}
public boolean isEmpty(){
boolean is = true;
for (int i = 0; i < ArrayLiLike.length; i++) {
if(ArrayLiLike[i] != null){
is = false;
break;
}
}
return is;
}
public int lastIndexOf(Object w){
int a = 0;
for (int i = 0; i < ArrayLiLike.length; i++) {
if(ArrayLiLike[i] == w){
a = i;
continue;
}
}
return a;
}
public boolean remove(Object re){
boolean in = false;
for (int i = 0; i < ArrayLiLike.length; i++) {
if(ArrayLiLike[i] == re){
in = true;
ArrayLiLike[i] = null;
break;
}
}
return in;
}
public int size(){
return ArrayLiLike.length+1;
}
public boolean remove(int re){
boolean in = false;
if (ArrayLiLike[re] != null){
in = true;
ArrayLiLike[re] = null;
}else{
in = false;
}
return in;
}
public Object set(int p, Object o){
ArrayLiLike[p] = o;
return ArrayLiLike[p];
}
public String toString(){
String s = new String();
for (int i = 0; i < ArrayLiLike.length; i++) {
s += ArrayLiLike[i] + " ";
}
return s;
}
}
Chp11 11.7的更多相关文章
- 地区sql
/*Navicat MySQL Data Transfer Source Server : localhostSource Server Version : 50136Source Host : lo ...
- WinForm 天猫2013双11自动抢红包【源码下载】
1. 正确获取红包流程 2. 软件介绍 2.1 效果图: 2.2 功能介绍 2.2.1 账号登录 页面开始时,会载入这个网站:https://login.taobao.com/member/login ...
- C++11特性——变量部分(using类型别名、constexpr常量表达式、auto类型推断、nullptr空指针等)
#include <iostream> using namespace std; int main() { using cullptr = const unsigned long long ...
- CSS垂直居中的11种实现方式
今天是邓呆呆球衣退役的日子,在这个颇具纪念意义的日子里我写下自己的第一篇博客,还望前辈们多多提携,多多指教! 接下来,就进入正文,来说说关于垂直居中的事.(以下这11种垂直居中的实现方式均为笔者在日常 ...
- C++ 11 多线程--线程管理
说到多线程编程,那么就不得不提并行和并发,多线程是实现并发(并行)的一种手段.并行是指两个或多个独立的操作同时进行.注意这里是同时进行,区别于并发,在一个时间段内执行多个操作.在单核时代,多个线程是并 ...
- CSharpGL(11)用C#直接编写GLSL程序
CSharpGL(11)用C#直接编写GLSL程序 +BIT祝威+悄悄在此留下版了个权的信息说: 2016-08-13 由于CSharpGL一直在更新,现在这个教程已经不适用最新的代码了.CSharp ...
- ABP(现代ASP.NET样板开发框架)系列之11、ABP领域层——仓储(Repositories)
点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之11.ABP领域层——仓储(Repositories) ABP是“ASP.NET Boilerplate Proj ...
- C++11 shared_ptr 智能指针 的使用,避免内存泄露
多线程程序经常会遇到在某个线程A创建了一个对象,这个对象需要在线程B使用, 在没有shared_ptr时,因为线程A,B结束时间不确定,即在A或B线程先释放这个对象都有可能造成另一个线程崩溃, 所以为 ...
- C++11网络编程
Handy是一个简洁优雅的C++11网络库,适用于linux与Mac平台.十行代码即可完成一个完整的网络服务器. 下面是echo服务器的代码: #include <handy/handy.h&g ...
随机推荐
- 金山软件wps2012-2013通杀0day
#!/usr/bin/python # Exploit Title: Kingsoft Office Writer v2012 8.1.0.3385 .wps Buffer Overflow Expl ...
- 1千万英国用户被Cryptolocker勒索软件瞄准
英国国家打击犯罪调查局(NCA)发布国家紧急警报,警报一场大规模的垃圾邮件,这些邮件中包含了一款名为CryptoLocker的勒索程序,把目标瞄准了1千万英国的email用户,该程序会加密用户的文档, ...
- 面向对象的JavaScript
多态 多态背后的思想是将"做什么"和"谁去做,怎样去做"分离开来,也就是将"不变的事物"与"可变的事物"分离开来. 其最 ...
- Linux下Gcc生成和使用静态库和动态库详解(转)
一.基本概念 1.1什么是库 在windows平台和linux平台下都大量存在着库. 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行. 由于windows和linux的平台不同( ...
- MFC-01-Chapter01:Hello,MFC---1.2 MFC简介
1.2 MFC简介 MFC是Microsoft提供的放置Windows API的面向对象的包装的C++类库.MFC大约封装了好几百个类,其中有一些可以直接调用,有些类可以作为用户自己的类的基类.一些M ...
- IOS框架和服务
在iOS中框架是一个目录,包含了共享资源库,用于访问该资源库中储存的代码的头文件,以及图像.声音文件等其他资源.共享资源库定义应用程序可以调用的函数和方法. iOS为应用程序开发提供了许多可使用的框架 ...
- 003-Tuple、Array、Map与文件操作入门实战
003-Tuple.Array.Map与文件操作入门实战 Tuple 各个元素可以类型不同 注意索引的方式 下标从1开始 灵活 Array 注意for循环的until用法 数组的索引方式 上面的for ...
- Bootstrap v4.0.0-alpha.5 发布,大量更新
Bootstrap v4.0.0-alpha.5 发布了,Bootstrap是快速开发Web应用程序的前端工具包.它是一个CSS和HTML的集合,它使用了最新的浏览器技术,给你的Web开发提供了时尚的 ...
- hightchart属性(更新中...)
legend:{ layout: 'vertical', //legend中内容垂直放置 align: 'right', //放在图表右边 verticalAlign: 'middle', // ...
- DOM扩展之 专有扩展
11.4.3 contains() 方法 用来确定某个节点是不是另一个节点的后代. 注:a.contains(a) 也是返回true.说明contains方法搜索是从自身开始的. DOM Level ...