本次内容:arraylist()

1、

 package list;

 import java.util.ArrayList;
import java.util.Date;
import java.util.List; /**
* 测试list的基本方法
* @author acer
*
*/
public class arraylist {
public static void main(String[] args)
{
List list=new ArrayList();
//Arraylist():低层实现是数组,查找容易,插入删除复杂。线程不安全
//LinkedList():低层实现是链表,查找复杂,插入删除容易。线程不安全
//Vector():低层实现是数组,线程安全
list.add("aaa");
list.add(new Date());
list.add(1234);//包装类:自动装箱
System.out.println(list.size());
list.remove(0);
System.out.println(list.size());
list.get(0);
System.out.println(list.get(0));
list.set(0, "bbb");
System.out.println(list.get(0));
System.out.println(list.get(1));
}
}

运行结果:
3
2
Tue May 20 22:18:58 CST 2014
bbb
1234

2、自己定义arraylist()函数

 package list;

 import java.util.Date;

 /**
* 自己定义arraylist,熟悉其低层实现
* @author acer
*
*/
public class myarraylist {
private Object[] elementData;
private int size;
public int size()//数组的大小
{
return size;
}
public myarraylist(int initalCapacity)//构造器
{
elementData=new Object[initalCapacity];
}
public Object get(int index)//取数组的值
{
rangeCheck(index);
return elementData[index];
}
public void add(Object object)//添加对象
{
ensureCapacity();
elementData[size++]=object;
}
public void add(int index,Object obj)//指定位置添加对象
{
rangeCheck(index);
ensureCapacity();
int numMoved=size-index;
System.arraycopy(elementData, index, elementData, index+1, numMoved);
elementData[index]=obj;
size++; }
private void ensureCapacity()//数组的扩容
{
if(size==elementData.length)
{
Object[] newarraylist=new Object[size*2+1];
System.arraycopy(elementData, 0,newarraylist,0,elementData.length);
elementData=newarraylist;
}
}
public void remove(int index)//移除对象
{
rangeCheck(index);
int numMoved=size-index-1;
if(numMoved>0)
{
System.arraycopy(elementData, index+1, elementData, index, numMoved);
}
elementData[--size]=null;
}
public void remove(Object obj)//移除对象
{
for(int i=0;i<size;i++)
{
if(get(i).equals(obj))
{
remove(i);
}
}
}
public boolean isEmpty()//判是否为空
{
return size==0;
}
private void rangeCheck(int index)//检测检索值是否越界
{
if(index<0||index>=size)
{
try {
throw new Exception();
} catch (Exception e) {
e.printStackTrace();
}
}
}
public static void main(String[] args)
{
myarraylist list=new myarraylist(3);
list.add("aaa");
list.add("bbb");
list.add(new Date());
System.out.println(list.isEmpty());
System.out.println(list.size());
System.out.println(list.get(0));
System.out.println(list.get(1));
System.out.println(list.get(2));
list.remove(0);
list.remove(new Date());
System.out.println(list.get(0));
list.add(1, "aaa");
System.out.println(list.get(1));
}
}

运行结果:

false
3
aaa
bbb
Tue May 20 23:41:15 CST 2014
bbb
aaa

java开始到熟悉100-102的更多相关文章

  1. 20165304实验一java开发环境熟悉

    实验报告封面 一.实验报告封面 课程:Java程序设计 班级:1653班 姓名:李松杨 学号:20165304 指导教师:娄嘉鹏 实验日期:2018年4月2日 实验时间:13:45 - 15:25 实 ...

  2. 百度Java研发面经100题 总结

    1. 单例模式常见的应用场景分析. 在23种设计模式中,单例模式排行老大.虽然理解简单,但是对于应用场景.你真正的熟悉么?使用单例,是由于没必要每个请求都新建一个对象,这样既浪费CPU又浪费内存:之所 ...

  3. java抓取快递100信息接口

    package zeze; import java.io.IOException; import org.json.JSONArray; import org.json.JSONException; ...

  4. 用Java计算某个日期100天后的日期

    用Java计算日期时间,首先考虑到时间类,Java中提供的和时间日期相关的类里,有一个Calendar类,可以获取某个时间日期. 计算某个日期100天后的日期,思路如下: 1.先设定时间,例如2017 ...

  5. Java最最常用的100个类排序(非官方)

    下面这句话是引用"大部分的 Java 软件开发都会使用到各种不同的库.近日我们从一万个开源的 Java 项目中进行分析,从中提取出最常用的 Java 类,这些类有来自于 Java 的标准库, ...

  6. Java基础:一个100%会发生死锁的程序

        多线程是Java工程师进阶所必须掌握的一项技能,也是面试中绕不过的一个环节,而死锁又是多线程同步失败的经典案例,对于复杂的系统,死锁是很难通过代码层面来做静态检测和排查的,所以有的面试官会从反 ...

  7. Java知多少(100)图像处理基础

    图像是由一组像素构成,用二进制形式保存的图片.java语言支持GIF.JPEG和BMP这3种主要图像文件格式.java语言的图像处理功能被封装在Image类中. 图像载入和输出 在java程序中,图像 ...

  8. 20165320 实验一 java环境的熟悉

    实验内容与步骤 一.java开发环境的熟悉 1.建立一个有关自己学号的目录 2.在当前文件下编译一个带包Hello.java文件 3.代码内容 package sq; import java.util ...

  9. Java迭代器问题 有100个人围成一个圈从1开始报数,报到14的这个人就要退出,然后其他人重新开始,从1报数,到14退出问:最后剩下的是100人中的第几个人 用listIterator迭代元素,并对集合进行删除操作

    package com.swift; import java.util.ArrayList; import java.util.List; import java.util.ListIterator; ...

  10. java开始到熟悉105-107

    1,HashMap基本用法 package list; import java.util.HashMap; import java.util.Map; /** * 测试map的基本用法 * @auth ...

随机推荐

  1. 封装微信分享到朋友/朋友圈js

    在页面引入: <script src="/static/lib/jquery-2.2.2.min.js"></script><script src=& ...

  2. python基础学习笔记——os模块

    #OS模块 #os模块就是对操作系统进行操作,使用该模块必须先导入模块: import os #getcwd() 获取当前工作目录(当前工作目录默认都是当前文件所在的文件夹) result = os. ...

  3. Hive 启动报错,需先启动元数据

    Exception in thread "main" java.lang.RuntimeException: java.lang.RuntimeException: Unable ...

  4. 【02】xmind如何修改默认线条设置

    [02]xmind如何修改不同主题的默认线条设置 魔芋:每次都是曲线.更喜欢为直线.因为曲线的路线是不确定的,看起来就显示很凌乱. 用everything搜索defaultStyles.xml     ...

  5. appium+python自动化-adb文件导入和导出(pull push)

    前言 用手机连电脑的时候,有时候需要把手机(模拟器)上的文件导出到电脑上,或者把电脑的图片导入手机里做测试用,我们可以用第三方的软件管理工具直接复制粘贴,也可以直接通过adb命令导入和导出. adb ...

  6. unittest单元测试(测试报告生成)

    自动化测试执行完成之后,我们需要生成测试报告来查看测试结果,使用HTMLTestRunner模块可以直接生产Html格式的报告. 下载地址: http://tungwaiyip.info/softwa ...

  7. [android开放篇] wifi-direct接口网址

    http://www.android-doc.com/guide/topics/connectivity/wifip2p.html

  8. 如何部署 sources and javadoc jars

    mvn org.apache.maven.plugins:maven-deploy-plugin:2.8.2:deploy-file -Durl=file:///home/me/m2-repo \ - ...

  9. BZOJ 1829 [Usaco2010 Mar]starc星际争霸 ——半平面交

    发现最终的结果只和$s1$,$s2$,$s3$之间的比例有关. 所以直接令$s3=1$ 然后就变成了两个变量,然后求一次半平面交. 对于每一个询问所属的直线,看看半平面在它的那一侧,或者相交就可以判断 ...

  10. bzoj2324 [ZJOI2011]营救皮卡丘 费用流

    [ZJOI2011]营救皮卡丘 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 2653  Solved: 1101[Submit][Status][D ...