您的位置:首页 > 编程语言 > Java开发

集合中List和Set

2016-01-04 01:09 429 查看
Collection接口有两个子接口: List(列表),Set(集)

List:可存放重复元素,元素存取是有序的。
Set:不可以存放重复元素,元素存取是无序 的


List集合中常用的类

Vector:线程安全,但速度慢,已被 ArrayList 替代。

ArrayList:线程不安全,查询速度快。

LinkedList:链表结构,增删速度快。

取出LIst集合中元素的方式: get(int  index)通过脚标获取元素。
iterator():通过迭代方法获取迭代器对象


集合框架-List集合的常见方法

public class Collection08_1 {
public static void main(String[] args) {
List list1=new ArrayList();
show(list1);
}

private static void show(List list) {
//添加元素
list.add("abc1");
list.add("abc2");
list.add("abc3");
System.out.println(list);
//插入元素
list.add(1,"abc9");
System.out.println(list);
//修改元素
System.out.println("set:"+list.set(1,"abc7"));
//返回被修改的元素
System.out.println(list);

//获取子列表
System.out.println("sublist:"+list.subList(1, 2));//包含1,不包含2

System.out.println(list);

}
}


集合框架-ListIterator接口

public class Collection09_1 {
public static void main(String[] args) {
List list=new ArrayList();
//      show(list);

list.add("abc1");
list.add("abc2");
list.add("abc3");

ListIterator it=list.listIterator();
////获取列表迭代器对象
//它可以实现在迭代过程中完成对元素的增删改查
//只有list集合具备该功能
while(it.hasNext()){
Object obj=it.next();
if(obj.equals("abc2")){
it.add("abc9");
}else{
System.out.println(list);
}
}
System.out.println("previous:"+it.previous());

/*  Iterator it=list.iterator();
while(it.hasNext()){
Object obj=it.next();      //java.util.ConcurrentModificationException
if(obj.equals("abc2")){
list.add("abc9");
}else{
System.out.println("next:"+obj);
}
}
System.out.println(list);
//在迭代器过程中,不要使用集合操作元素,容易报异常
//可以使用Iterator接口的子接口ListIterator来完成在迭代中对元素进行更多的操作
*/      }

private static void show(List list) {
list.add("abc1");
list.add("abc2");
list.add("abc3");
list.add("abc4");

Iterator it=list.iterator();
while(it.hasNext()){
System.out.println("next:"+it.next());
}

//list的特有取去方式元素的方式之一
for(int x=0;x<list.size();x++){
System.out.println("get:"+list.get(x));
}

}
}


Collection

|--List:有序(存入和取出的顺序一致),元素都有索引(角标),元素可以重复。
|--Set:元素不可以重复,无序。

List:特有的常见方法:有一个共性特点就是都可以操作角标。

1.添加
void   add(index,element);
void   add(index,collection);

2.删除
Object    remove(index);

3.修改
Object   set(index,element);

4.获取
Object    get(index);
int    indexOf(object);
int     lastIndexOf(object);
List    subList(from,to);

List集合是可以完成对元素的增删改查。

List:
|--Vector:内部是数据数据结构,是同步的。增删,查询都很慢
|--ArrayList:内部是数据数据结构,是不同步的。替代了Vector。查询的速度快。
|--LinkedList:内部是链表数据结构,是不同步的。增删元素的速度非常快。

LinkedList:
addFirst();
addLast();
jdk1.6
offerFirst();
offerLast();

getFirst();//获取但不移除,如果链表为空,抛出NoSuchElementException
getLast();
jdk1.6
peekFirst;//获取但不移除,如果链表为空,返回null.
removeLast();
jdk1.6
pollFirst();//获取并移除,如果链表为空,返回null.
pooLast();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java