javalist
LIST是个容器接口能够理解为动态数组,传统数组有必要界说好数组的个数才能够运用,而容器目标无须界说好数组下标总数,用add()办法即可添加新的成员目标,他能够添加的仅仅只能为目标,不能添加根本数据类型,容器还对应get(),remove()办法来获取和删去数据成员。
java中可变数组的原理便是不断的创建新的数组,将原数组加到新的数组中,下文对javalist用法做了详解
|–List:元素是有序的(怎样存的就怎样取出来,次序不会乱),元素能够重复(角标1上有个3,角标2上也能够有个3)由于该调集系统有索引,
|–ArrayList:底层的数据结构运用的是数组结构(数组长度是可变的百分之五十延长)(特点是查询很快,但增删较慢)线程不同步
|–LinkedList:底层的数据结构是链表结构(特点是查询较慢,增删较快)
|–Vector:底层是数组数据结构线程同步(数组长度是可变的百分之百延长)(不管查询仍是增删都很慢,被ArrayList替代了)
List:特有的办法,但凡能够操作角标的办法都是该系统特有的办法。
添加,代码如下:
booleanadd(intindex,Eelement)
booleanaddAll(index,Collection)
booleanaddAll(Collection)
publicstaticvoidaddData(){
Listlist1=newArrayList();
list1.add(“www.yoodb.com”);
list1.add(“www.yoodb.com”);//List调集中元素可重复
list1.add(“yoodb.com”);
list1.add(“com”);
System.out.println(“输出原调集:”+list1);
Listlist2=newArrayList();
list2.add(“yoodb”);
list1.addAll(list2);
System.out.println(“输出改变的调集”+list1);
}
输出原调集:[www.yoodb.com,www.yoodb.com,yoodb.com,com]
输出改变的调集[www.yoodb.com,www.yoodb.com,yoodb.com,com,yoodb]
删去指定方位的元素,如下:
Eremove(intindex);
booleanremove(Objecto);
booleanremoveAll(Collection>c);
publicstaticvoidremoveData(){
Listlist1=newArrayList();
list1.add(“www.yoodb.com”);
list1.add(“www.yoodb.com”);//List调集中元素可重复
list1.add(“yoodb.com”);
list1.add(“com”);
System.out.println(“输出原调集:”+list1);
list1.remove(0);
System.out.println(“输出改变的调集”+list1);
}
输出原调集:[www.yoodb.com,www.yoodb.com,yoodb.com,com]
输出改变的调集[www.yoodb.com,yoodb.com,com]
修正指定角标的元素set(intindex,Eelement)回来的是修正的那个元素,如下:
publicstaticvoidupdateData(){
Listlist1=newArrayList();
list1.add(“www.yoodb.com”);
list1.add(“www.yoodb.com”);//List调集中元素可重复
list1.add(“yoodb.com”);
list1.add(“com”);
System.out.println(“输出原调集:”+list1);
list1.set(1,”yoodb”);
System.out.println(“输出改变的调集”+list1);
}
输出原调集:[www.yoodb.com,www.yoodb.com,yoodb.com,com]
输出改变的调集[www.yoodb.com,yoodb,yoodb.com,com]
查询,代码如下:
Eget(intindex);//回来列表中指定方位的元素
ListsubList(intfromIndex,inttoIndex);//回来列表中指定的fromIndex(包括)和toIndex(不包括)之间的部分元素
publicstaticvoidaddData(){
Listlist1=newArrayList();
list1.add(“www.yoodb.com”);
list1.add(“www.yoodb.com”);//List调集中元素可重复
list1.add(“yoodb.com”);
list1.add(“com”);
System.out.println(“输出原调集:”+list1);
System.out.println(“输出”+list1.get(0));
System.out.println(“输出”+list1.subList(0,2));
}
输出原调集:[www.yoodb.com,www.yoodb.com,yoodb.com,com]
输出www.yoodb.com
输出[www.yoodb.com,www.yoodb.com]
List调集特有的迭代器:ListIterator(是Iterator的子接口),主见事项如下:
在迭代时,是不能够经过调集目标的办法操作调集中的元素
由于会产生ConcurrentModificationException反常(并发反常)
所以,在迭代器时,只能用迭代器的办法做作元素
由于Iterator办法是有限的所以只能对元素进行判断,取出,删去的操作
假如想要其他的操作如添加,修正等,就需要运用其子接口,ListIterator
该接口只能经过List调集的listIterator办法获取。
代码完成如下:
publicstaticvoidaddData(){
Listlist1=newArrayList();
list1.add(“www.yoodb.com”);
list1.add(“www.yoodb.com”);//List调集中元素可重复
list1.add(“yoodb.com”);
list1.add(“com”);
System.out.println(“输出原调集:”+list1);
//只要List的listIterator有增,删,改,查这些功能,由于只要List有索引
ListIteratorli=list1.listIterator();
while(li.hasNext()){
if(li.next().equals(“www.yoodb.com”))
li.set(“yoodb”);
}
System.out.println(“输出改变调集:”+list1);
}
输出原调集:[www.yoodb.com,www.yoodb.com,yoodb.com,com]
输出改变调集:[yoodb,yoodb,yoodb.com,com]
javalist方法详解
ArrayList与LinkedList对?
相同点:
都是List调集的常?的完成类。
对调集中的元素操作的?法基本?致。
都是线程不安全的
不同点:
ArrayList底层完成是数组,使?数组这种数据结构进?数据的存储。
LinkedList底层完成是双链表,使?双链表这种数据结构进?数据的存储。
数组与链表成果特色?较:
数组完成功用时查找快,增加删去慢
链表查找慢,增加删去快
ArrayList与LinkedList的使?场景:
假如对调集中的元素,增删操作不怎么频频,查询操作?较频频。使?ArrayList。
假如对调集中的元素,增删操作?较频频,查询操作不怎么频频。使?LinkedList。
调集对?界说目标的存储
类分成体系类和?界说类
体系类往往现已重写了tostring(),equals(),hashcode()等?法
?界说类,为了完成咱们的功用,往往咱们需求重写?类的常??法,?如:tostring(),equals(),hashcode()
LinkedList
对于LinkedList的特有?法对?:
jdk1.6以前的删去获取?法,拿不到元素报反常
jdk1.6今后的删去获取?法,拿不到元素返回null
所以主张使?1.6之后的.
数据结构
数据结构界说
数据结构是计算机存储、安排数据的?式,是相互之间存在?种或多种特定联系的数据元素的调集,即带“结构”的数据元素的调集。“结构”就是指数据元素之间存在的联系,分为逻辑结构和存储结构.通常情况下,精?选择的数据结构能够带来更?的运?或许存储效率。
数据的逻辑结构和物理结构是数据结构的两个密切相关的??,同?逻辑结构能够对应不同的存储结构。算法的规划取决于数据的逻辑结构,?算法的完成依赖于指定的存储结构.
数据的逻辑结构
指反映数据元素之间的逻辑联系的数据结构,其中的逻辑联系是指数据元素之间的前后间联系,?与他们在计算机中的存储位置?关。逻辑结构包含:
调集:数据结构中的元素之间除了“同属?个调集”的相互联系外,别?其他联系;
线性结构:数据结构中的元素存在?对?的相互联系;
树形结构:数据结构中的元素存在?对多的相互联系;
图形结构:数据结构中的元素存在多对多的相互联系。
数据的物理结构
指数据的逻辑结构在计算机存储空间的存放方式。
常?的数据结构
程序规划中常?的数据结构包含如下?个。注意:这?的数据结构分类是从逻辑结构进步?的.
数组(Array)
数组是?种聚合数据类型,它是将具有相同类型的若?变量有序地安排在?起的调集。数组能够说是最基本的数据结构,在各种编程语?中都有对应。?个数组能够分解为多个数组元素,依照数据元素的类型,数组能够分为整型数组、字符型数组、浮点型数组、指针数组和结构数组等。数组还能够有?维、?维以及多维等表现方式。
栈(Stack)
栈是?种特别的线性表,它只能在?个表的?个固定端进?数据结点的插?和删去操作。栈依照后进先出的原则来存储数据,也就是说,先插?的数据将被压?栈底,最终插?的数据在栈顶,读出数据时,从栈顶开端逐一读出。栈在汇编语?程序中,经常?于重要数据的现场维护。栈中没有数据时,称为空栈。
行列(Queue)
行列和栈类似,也是?种特别的线性表。和栈不同的是,行列只允许在表的?端进?插?操作,?在另?端进?删去操作。?般来说,进?插?操作的?端称为队尾,进?删去操作的?端称为队头。行列中没有元素时,称为空行列。
链表(LinkedList)
链表是?种数据元素依照链式存储结构进?存储的数据结构,这种存储结构具有在物理上存在?连续的特色。链表由?系列数据结点构成,每个数据结点包含数据域和指针域两部分。其中,指针域保存了数据结构中下?个元素存放的地址。链表结构中数据元素的逻辑顺序是通过链表中的指针链接次第来完成的。
树(Tree)
树是典型的?线性结构,它是包含,2个结点的有穷调集K。在树结构中,有且仅有?个根结点,该结点没有前驱结点。在树结构中的其他结点都有且仅有?个前驱结点,?且能够有两个后继结点,m≥0。
图(Graph)
图是另?种?线性数据结构。在图结构中,数据结点?般称为极点,?边是极点的有序偶对。假如两个极点之间存在?条边,那么就表示这两个极点具有相邻联系。
堆(Heap)
堆是?种特别的树形数据结构,?般评论的堆都是?叉堆。堆的特色是根结点的值是一切结点中最?的或许最?的,并且根结点的两个?树也是?个堆结构。
散列表(Hash)
散列表源?于散列函数(Hashfunction),其思想是假如在结构中存在关键字和T相等的记载,那么必定在F(T)的存储位置能够找到该记载,这样就能够不?进??较操作?直接获得所查记载。
评论前必须登录!
注册