潍坊市作风建设年网站,手机网站前,老榕树智能建站软件,手机能建网站不List接口
List是一个接口#xff0c;它继承Collection接口#xff0c;Collection接口中的一些常用方法 List也有一些常用的方法。List是一个接口#xff0c;它并不能直接实例化#xff0c;ArrayList和LinkedList都实现了List接口#xff0c;它们的常用方法都很相似。 Ar…List接口
List是一个接口它继承Collection接口Collection接口中的一些常用方法 List也有一些常用的方法。List是一个接口它并不能直接实例化ArrayList和LinkedList都实现了List接口它们的常用方法都很相似。 ArrayList
认识ArrayList ArrayList是一个类它实现了List接口。ArrayList内部其实是一个数组首先会默认一个初始数组容量如果数组容量不足就需要扩容来存放数据扩容是当前数组的一倍。通过一些方法进行存放它继承类List接口中的所有方法。ArrayList通常都是以泛型的方式实现的所以使用这个类时要先实例化一个对象ArrayList arrayList new ArrayList()。 顺序表就是地址连续的一块空间用来存储数据的线性结构。ArrayList其实就像一个顺序表它将数据存储在数组中然后对这个数组通过一些方法进行增删改查。
ArrayList的创建
首先需要构造一个对象可以无参构造较为常用在其里初始化一个数组。 模拟实现ArrayList
下面我们来分析ArrayList是如何实现的 首先我们先了解ArrayList类中有什么有两个属性一个是数组还有一个是计数的还有构造方法也有一系列方法的实现我们现在就来模拟一个ArrayList类
public class MyList {public int[] array;public int size 0;private static final int CAPACITY 5;public MyList(){this.array new int[CAPACITY];this.size size;}//显示public void disPlay(){for(int i 0; i size; i ){System.out.print(array[i] );}System.out.println();}//容量是否为满public boolean isFull(){if(size array.length){return true;}return false;}//增public void add(int data){if (isFull()){//扩容array Arrays.copyOf(array,2*array.length);}array[size] data;size;}//位置是否合法public void isLegal(int pos){if (pos 0 || pos size - 1){//System.out.println(位置不合法);throw new PosOutException(pos位置不合法);}}//删public void del(int pos){isLegal(pos);for (int i pos; i size; i){array[i] array[i1];}size--;}//改public void change(int pos, int data){isLegal(pos);array[pos] data;}//查找public void find(int data){for (int i 0; i size; i){if(array[i] data){System.out.println(找到了下标为i);return ;}}System.out.println(该数据找不到);}//置为零public void clear(){size 0;}
}
一般写完一个方法的时候就先调用一下方法看看是否符合自己所想的如何调用就是在主方法里测试。例如下的方法我使用的是ArrayList自带的方法
public static void main(String[] args) {ArrayListInteger list new ArrayList();list.add(1);list.add(2);list.add(3);list.add(4);list.add(5);}
ArrayList的遍历
ArrayList中遍历有三种遍历方法分别是
1.for循环
//1循环遍历
for(int i 0; i list.size(); i){System.out.print(list.get(i) );
}
2.使用增强for循环 //2只遍历
for(Integer x: list){System.out.print(x );
}
3.使用迭代器
//3迭代器
IteratorInteger it list.iterator();
while(it.hasNext()){System.out.print(it.next() );
}
System.out.println();
ArrayList常用的方法
构造完就可以对这个对象进行操作例增删该查等使用的话就需要记住常用的方法 我们现在一个一个实现
boolean add(E e);//尾插 public static void main(String[] args) {ArrayListInteger arraylist new ArrayList();arraylist.add(12);//将12插入到数组末尾//arraylist.add(abcd);//泛型为Integer将这个对象限制在这个类型了arraylist.add(23);System.out.println(arraylist);//结果为[12, 23];}
void add(int index, E e);//将e插入到index位置 public static void main(String[] args) {ArrayListInteger arraylist new ArrayList();//将index下标的插入element数据arraylist.add(0, 12);arraylist.add(0,23);//arraylist.add(2,23);//该数组中只存在0和1下标位置的数组超过了就会出现数组越界System.out.println(arraylist);//结果为[12, 23];} boolean addAll(Collection? extend E);//尾插c中的元素 public static void main(String[] args) {//创建顺序表ArrayListInteger arraylist1 new ArrayList();arraylist1.add(12);arraylist1.add(23);//创建一个新的顺序表将新的所有数据都尾插到原来顺序表中ArrayListInteger arraylist2 new ArrayList();arraylist2.add(34);arraylist2.add(56);arraylist1.addAll(arraylist2);System.out.println(arraylist1);//结果为[12, 23];}
E remove(int index);//删除index位置的元素 public static void main(String[] args) {ArrayListInteger arraylist new ArrayList();arraylist.add(12);arraylist.add(23);//删除下标为0数arraylist.remove(0);System.out.println(arraylist);//结果为[23];}
boolean remove(Object o);//删除遇到第一个o public static void main(String[] args) {ArrayListString arrayList new ArrayList();arrayList.add(111);arrayList.add(aaa);arrayList.add(12);arrayList.add(aaa);//删除遇到的第一个o相反没有遇到就不删除arrayList.remove(aaa);arrayList.remove(1);System.out.println(arrayList);}
E get(int index);//获取下标index位置元素 public static void main(String[] args) {ArrayListInteger arrayList new ArrayList();arrayList.add(12);arrayList.add(23);//获取下标index位置元素System.out.println(arrayList.get(1));//结果是[23]}
E set(int index, E element);//将下标index位置元素设置为element public static void main(String[] args) {ArrayListInteger arrayList new ArrayList();arrayList.add(12);arrayList.add(23);arrayList.add(34);//将下表index位置元素设置为elementarrayList.set(2,555);System.out.println(arrayList);//结果为[12, 23, 555]}
void clear();//清空 public static void main(String[] args) {ArrayListInteger arrayList new ArrayList();arrayList.add(12);arrayList.add(23);arrayList.add(34);//清空arrayList中所有数据arrayList.clear();System.out.println(arrayList);//结果为[]}
boolean contains(Object o);//判断o是否在线性表中 public static void main(String[] args) {ArrayListString arrayList new ArrayList();arrayList.add(hello );arrayList.add(world );arrayList.add(coming);//判断是否存在oSystem.out.println(arrayList.contains(come));System.out.println(arrayList.contains(coming));System.out.println(arrayList);//结果为[hello, world , coming]}
int indexOf(Object o);//返回第一个o所在下标int lastIndexOf(Object o);//返回最后一个o的下标 public static void main(String[] args) {ArrayListString arrayList new ArrayList();arrayList.add(hello );arrayList.add(world );arrayList.add(coming);arrayList.add(hello );//返回下标System.out.println(arrayList.indexOf(hello ));//返回第一次遇到o的下标System.out.println(arrayList.lastIndexOf(hello ));//返回最后一个遇到o的下标System.out.println(arrayList);//结果为[hello, world , coming, hello ]} ListE subList(int fromIndex, int toIndex);//截取部分链表从fromIndex到toIndex public static void main(String[] args) {ArrayListString arrayList new ArrayList();arrayList.add(hello );arrayList.add(world );arrayList.add(coming);arrayList.add(hello );//ListString arrayList1 arrayList.subList(1,2);//截取从1到2的下标且满足左闭右开System.out.println(arrayList1);//结果是[world ]}
以上就是ArrayList中常见的方法我们可以通过ArrayList中的方法实现一些算法下一节讲这些算法嗷~