本次内容: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. LeetCode(107) Binary Tree Level Order Traversal II

    题目 Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from l ...

  2. Java面试——从JVM角度比较equals和==的区别

    1.  Java中数据类型分类 1.1    基本数据类型 又称为原始数据类型,byte,short,char,int,long,float,double,boolean,他们之间的比较应该使用(== ...

  3. Oracle从入门到精通(笔记)

    一.Oracle11g概述 1.6 启动与关闭数据库实例 1.6.1 启动数据库实例 Oracle数据库实例启动分3个步骤:启动实例,加载数据库,打开数据库: 命令格式:startup [nomoun ...

  4. C#简易日志输出

    精简版: public static void WriteLog(string message, string group = "") { var logPath = System ...

  5. python基础-对象

    1. 对象:一组数据和操作数据方法的集合 >>> class Person(object): ...     def __init__(self,name): ...         ...

  6. Caffe 编译: undefined reference to imencode()

    本系列文章由 @yhl_leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/52150781 整理之前编译工程中遇到的 ...

  7. POP-一个点击带有放大还原的动画效果

    原理 监听屏幕的点击事件 - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(nullable UIEvent *)ev ...

  8. 论文笔记:Ten years of pedestrian detection, what have we learned?

    最近正在研究行人检测,学习了一篇2014年发表在ECCV上的一篇综述性的文章,是对行人检测过去十年的一个回顾,从dataset,main approaches的角度分析了近10年的40多篇论文提出的方 ...

  9. Python 可变对象与不可变对象

    1. 不可变(immutable):int.字符串(string).float.(数值型number).元组(tuple) 可变(mutable):字典型(dictionary).列表型(list) ...

  10. 每日记录 2016-4-29 HTML5本地存储

    HTML5本地存储 一.HTML5 localStorage 在HTML5中,本地存储是一个window的属性,包括localStorage和 sessionStorage,从名字应该可以很清楚的辨认 ...