java开始到熟悉100-102
本次内容: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的更多相关文章
- 20165304实验一java开发环境熟悉
实验报告封面 一.实验报告封面 课程:Java程序设计 班级:1653班 姓名:李松杨 学号:20165304 指导教师:娄嘉鹏 实验日期:2018年4月2日 实验时间:13:45 - 15:25 实 ...
- 百度Java研发面经100题 总结
1. 单例模式常见的应用场景分析. 在23种设计模式中,单例模式排行老大.虽然理解简单,但是对于应用场景.你真正的熟悉么?使用单例,是由于没必要每个请求都新建一个对象,这样既浪费CPU又浪费内存:之所 ...
- java抓取快递100信息接口
package zeze; import java.io.IOException; import org.json.JSONArray; import org.json.JSONException; ...
- 用Java计算某个日期100天后的日期
用Java计算日期时间,首先考虑到时间类,Java中提供的和时间日期相关的类里,有一个Calendar类,可以获取某个时间日期. 计算某个日期100天后的日期,思路如下: 1.先设定时间,例如2017 ...
- Java最最常用的100个类排序(非官方)
下面这句话是引用"大部分的 Java 软件开发都会使用到各种不同的库.近日我们从一万个开源的 Java 项目中进行分析,从中提取出最常用的 Java 类,这些类有来自于 Java 的标准库, ...
- Java基础:一个100%会发生死锁的程序
多线程是Java工程师进阶所必须掌握的一项技能,也是面试中绕不过的一个环节,而死锁又是多线程同步失败的经典案例,对于复杂的系统,死锁是很难通过代码层面来做静态检测和排查的,所以有的面试官会从反 ...
- Java知多少(100)图像处理基础
图像是由一组像素构成,用二进制形式保存的图片.java语言支持GIF.JPEG和BMP这3种主要图像文件格式.java语言的图像处理功能被封装在Image类中. 图像载入和输出 在java程序中,图像 ...
- 20165320 实验一 java环境的熟悉
实验内容与步骤 一.java开发环境的熟悉 1.建立一个有关自己学号的目录 2.在当前文件下编译一个带包Hello.java文件 3.代码内容 package sq; import java.util ...
- Java迭代器问题 有100个人围成一个圈从1开始报数,报到14的这个人就要退出,然后其他人重新开始,从1报数,到14退出问:最后剩下的是100人中的第几个人 用listIterator迭代元素,并对集合进行删除操作
package com.swift; import java.util.ArrayList; import java.util.List; import java.util.ListIterator; ...
- java开始到熟悉105-107
1,HashMap基本用法 package list; import java.util.HashMap; import java.util.Map; /** * 测试map的基本用法 * @auth ...
随机推荐
- Android兼容性测试GTS-环境搭建、测试执行、结果分析
GTS的全称是Google Mobile Services Test Suite,所谓的Google Mobile Services即谷歌移动服务,是谷歌开发并推动Android的动力,也是Andro ...
- python红包随机生成(隔板法)
#红包生成思路#200 块钱 10个红包#0-200 的一个轴,随机取9个点,分成10段, 每一段的值表示一个红包的大小 #把输入的 money值 * 100 拿到的数值就是分, 不用再考虑单位是元的 ...
- luogu2569 [SCOI2010]股票交易
题解看这里 #include <iostream> #include <cstring> #include <cstdio> using namespace std ...
- STM32F407 I2C 个人笔记
源代码;https://github.com/YuQiao0303/STM32F407-Examples/tree/master/24.IIC 概述 I2C (IIC, Inter-Integrate ...
- wordpress需要FTP用户名密码的问题
wordpress安装删除插件需要FTP用户名密码的问题 方法一: 服务器命令操作: 1.在wordpress目录下面wp-config.php末尾加入下面代码: if(is_admin()) { ...
- zoj 2176 Speed Limit
Speed Limit Time Limit: 2 Seconds Memory Limit: 65536 KB Bill and Ted are taking a road trip. B ...
- POJ-2318 TOYS,暴力+叉积判断!
TOYS 2页的提交记录终于搞明白了. 题意:一个盒子由n块挡板分成n+1块区 ...
- 浅谈Oracle数据库分区表
Oracle数据库分区是作为Oracle数据库性能优化的一种重要的手段和方法,之前,只听过分区的大名,却总未用过,最近简单学习了一下,总结如下,不对之处,还希望朋友们多多指点,交流! 1.表空间及分区 ...
- 如何解决"The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path"
今天我在eclipse上搭建新项目时,莫名其妙的出现这个错误,如下: The superclass "javax.servlet.http.HttpServlet" was not ...
- spring5响应式编程
1.Spring5新特性 2.响应式编程响应式编程:非阻塞应用程序,借助异步和事件驱动还有少量的线程垂直伸缩,而非横向伸缩(分布式集群)当Http连接缓慢的时候,从数据库到Http数据响应中也会 ...