Java基础-List集合共性方法、List和Set子接口、具体对象的特点
2018-03-21 09:17
495 查看
Collection:
|--List:元素是有序的,元素可以重复。因为该集合体系有索引。
|--ArrayList:底层的数据结构使用的是数组结构,特点:查询速度很快,但是增删稍慢。线程不同步。
|--LinkedList:底层的数据结构使用的是链表结构,特点:增删很快,查询稍慢。
|--Vector:底层的数据结构使用的是数组结构,线程同步,被ArrayList替代。
数组是固定长度,集合是可变长度。
ArrayList:数组默认为10个元素,超过之后,会new一个新的数组(50%延长),把原数组copy新的数组里。
Vector:长度也为10,但是100%延长。浪费空间。 (代码:2)
|--Set:元素是无序的,元素不可以重复。
List:
特有方法,凡是可以操作角标的方法都是该体系特有的方法。
增:
add(index,element);
addAll(index,Collection);
删:
remove(index);
改:
set(index,element);
查:
get(index);
subList(from,to);
listIterator();
List集合特有的迭代器,ListIterator是Iterator的子接口。
在迭代时,不可以通过集合对象的方法操作集合中的元素,因为会发生ConcurrentModificationException异常。
所以,在使用迭代器时,只能用迭代器的remove操作元素,可是Iterator方法是有限的。
只能你对元素进行判断、取出和删除的操作。如果想要其他的操作如添加、修改等,就需要使用其子接口,ListIterator。
该接口只能通过List集合的ListIterator方法获取。
代码1:import java.util.*;
public class code
{
public static void method_get() {
ArrayList a = new ArrayList();
//增加元素
a.add("666");
a.add("66566");
a.add("6655566");
sop(a);//打印所有元素
a.add(2,"7654321");//通过角标增加元素
a.remove(1);//删除指定元素
a.set(2, "888");//通过角标修改元素
for(int i=0;i<a.size();i++)
sop(a.get(i));//通过角标获取元素
for(Iterator c = a.iterator();c.hasNext();)
sop(c.next());//通过迭代器获取元素
}
public static void main(String[] args) {
method_get();
}
public static void sop(Object obj) {
System.out.println(obj);
}
}ListIterator()方法代码:import java.util.*;
public class code
{
public static void method_get() {
ArrayList a = new ArrayList();
//增加元素
a.add("666");
a.add("777");
a.add("888");
ListIterator l=a.listIterator();
sop(l.hasPrevious());//false
while(l.hasNext()){
Object obj=l.next();
if(obj.equals("777"))
l.set("555");
}
sop(l.hasNext());//false
sop(l.hasPrevious());//true
}
public static void main(String[] args) {
method_get();
}
public static void sop(Object obj) {
System.out.println(obj);
}
}枚举就是Vector特有的取出方式。
我们可以发现枚举和迭代器很相似。其实枚举和迭代时一样的。
因为枚举的名称以及方法的名称都过长,所以就被迭代器取代了,枚举郁郁而终啦!
代码2:import java.util.*;
public class code
{
public static void Vectordemo() {
Vector a = new Vector();
a.add("java01");
a.add("java02");
a.add("java03");
a.add("java04");
Enumeration en = a.elements();
while(en.hasMoreElements())
sop(en.nextElement());
}
public static void main(String[] args) {
Vectordemo();
}
public static void sop(Object obj) {
System.out.println(obj);
}
}
|--List:元素是有序的,元素可以重复。因为该集合体系有索引。
|--ArrayList:底层的数据结构使用的是数组结构,特点:查询速度很快,但是增删稍慢。线程不同步。
|--LinkedList:底层的数据结构使用的是链表结构,特点:增删很快,查询稍慢。
|--Vector:底层的数据结构使用的是数组结构,线程同步,被ArrayList替代。
数组是固定长度,集合是可变长度。
ArrayList:数组默认为10个元素,超过之后,会new一个新的数组(50%延长),把原数组copy新的数组里。
Vector:长度也为10,但是100%延长。浪费空间。 (代码:2)
|--Set:元素是无序的,元素不可以重复。
List:
特有方法,凡是可以操作角标的方法都是该体系特有的方法。
增:
add(index,element);
addAll(index,Collection);
删:
remove(index);
改:
set(index,element);
查:
get(index);
subList(from,to);
listIterator();
List集合特有的迭代器,ListIterator是Iterator的子接口。
在迭代时,不可以通过集合对象的方法操作集合中的元素,因为会发生ConcurrentModificationException异常。
所以,在使用迭代器时,只能用迭代器的remove操作元素,可是Iterator方法是有限的。
只能你对元素进行判断、取出和删除的操作。如果想要其他的操作如添加、修改等,就需要使用其子接口,ListIterator。
该接口只能通过List集合的ListIterator方法获取。
代码1:import java.util.*;
public class code
{
public static void method_get() {
ArrayList a = new ArrayList();
//增加元素
a.add("666");
a.add("66566");
a.add("6655566");
sop(a);//打印所有元素
a.add(2,"7654321");//通过角标增加元素
a.remove(1);//删除指定元素
a.set(2, "888");//通过角标修改元素
for(int i=0;i<a.size();i++)
sop(a.get(i));//通过角标获取元素
for(Iterator c = a.iterator();c.hasNext();)
sop(c.next());//通过迭代器获取元素
}
public static void main(String[] args) {
method_get();
}
public static void sop(Object obj) {
System.out.println(obj);
}
}ListIterator()方法代码:import java.util.*;
public class code
{
public static void method_get() {
ArrayList a = new ArrayList();
//增加元素
a.add("666");
a.add("777");
a.add("888");
ListIterator l=a.listIterator();
sop(l.hasPrevious());//false
while(l.hasNext()){
Object obj=l.next();
if(obj.equals("777"))
l.set("555");
}
sop(l.hasNext());//false
sop(l.hasPrevious());//true
}
public static void main(String[] args) {
method_get();
}
public static void sop(Object obj) {
System.out.println(obj);
}
}枚举就是Vector特有的取出方式。
我们可以发现枚举和迭代器很相似。其实枚举和迭代时一样的。
因为枚举的名称以及方法的名称都过长,所以就被迭代器取代了,枚举郁郁而终啦!
代码2:import java.util.*;
public class code
{
public static void Vectordemo() {
Vector a = new Vector();
a.add("java01");
a.add("java02");
a.add("java03");
a.add("java04");
Enumeration en = a.elements();
while(en.hasMoreElements())
sop(en.nextElement());
}
public static void main(String[] args) {
Vectordemo();
}
public static void sop(Object obj) {
System.out.println(obj);
}
}
相关文章推荐
- 黑马程序员:Java基础——List集合共性方法,Iterator迭代和集合具体对象的特点
- 面向对象-List集合(共性方法、List和Set子接口、具体对象的特点)
- Java基础-Map概述与子类对象特点、共性方法
- java基础:集合框架之List(共性方法)
- Java基础 集合框架 共性方法 迭代器 ArrayList LinkedList Vector HashSet TreeSet
- 集合框架《一》List集合具体对象的特点
- 黑马程序员——JAVA基础——集合---概述、Collection中共性方法、List、Map、工具类Collections和Arrays
- Java---26---List集合共性方法
- JAVA之旅(二十二)——Map概述,子类对象特点,共性方法,keySet,entrySet,Map小练习
- List集合的具体对象的特点
- Java基础-15总结对象数组,集合Collection,集合List
- JAVA之旅(二十二)——Map概述,子类对象特点,共性方法,keySet,entrySet,Map小练习
- java在list集合指定位置插入对象和js在数组指定位置插入对象的方法
- JAVA基础回顾1 遍历List Set 和Map集合的所有方法
- Java中Json字符串直接转换为对象的方法(包括多层List集合)
- Java基础知识强化之集合框架笔记22:List集合的三个子类的特点(面试题)
- java毕向东听课笔记22(集合框架-List集合共性方法)
- 集合-Map概述-Map子类对象特点-Map共性方法
- 关于迭代器,List集合具体对象的特点以及ListIterator学习总结
- Java基础知识强化之集合框架笔记15:List集合的特点