本次内容: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. gnu make规则记录

    1. $(shell CMD) 名称: 执行 shell 命令函数 功能: 在新的 shell 中执行 CMD 命令 返回值: CMD 在 shell 中执行的结果 例如:PLATFORM=$(she ...

  2. lfyzoj103 割海成路之日

    问题描述 现在,摆在早苗面前的是一道简单题.只要解决了这道简单题,早苗就可以发动她现人神的能力了: 输出 \[1\ \mathrm{xor}\ 2\ \mathrm{xor} \cdots \math ...

  3. DDL、DML、DCL、DQL的理解

    DDL.DML 和 DCL 的理解 DDL(data definition language)数据库定义语言 的主要语句(操作) Create 语句:可以创建数据库和数据库的一些对象. Drop 语句 ...

  4. NYOJ 814 又见拦截导弹

    又见拦截导弹 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述 大家对拦截导弹那个题目应该比较熟悉了,我再叙述一下题意:某国为了防御敌国的导弹袭击,新研制出来一种导弹拦 ...

  5. pytorch将cpu训练好的模型参数load到gpu上,或者gpu->cpu上

    假设我们只保存了模型的参数(model.state_dict())到文件名为modelparameters.pth, model = Net() 1. cpu -> cpu或者gpu -> ...

  6. TOJ 5020: Palindromic Paths

    5020: Palindromic Paths  Time Limit(Common/Java):10000MS/30000MS     Memory Limit:65536KByteTotal Su ...

  7. PTA 09-排序1 排序 (25分)

    题目地址 https://pta.patest.cn/pta/test/15/exam/4/question/720 5-12 排序   (25分) 给定NN个(长整型范围内的)整数,要求输出从小到大 ...

  8. [Istio]Web应用出现upstream connect error or disconnect/reset before headers

    在部署web应用之后,使用ingressway为入口,不能正常访问.服务返回 upstream connect error or disconnect/reset before headers 这种情 ...

  9. BZOJ 2154 Crash的数字表格 ——莫比乌斯反演

    求$\sum_{i=1}^n\sum_{j=1}^n lcm(i,j)$ 枚举因数 $ans=\sum_{d<=n} F(d) * d$ $F(d)$表示给定范围内两两$\sum_{gcd(i, ...

  10. BZOJ 3939 [Usaco2015 Feb]Cow Hopscotch ——线段树 CDQ分治

    显然dp[i][j]=ps[i-1][j-1]-sigma(dp[k<i][l<j],a[i][j]=a[k][l]) 考虑对于每一种颜色都开一颗区间线段树,但是空间不够. 所以我们可以动 ...