java基础之集合List

来源:互联网 发布:安卓源码在线生成apk 编辑:程序博客网 时间:2024/06/05 11:27

集合的认识——List

List为接口,想要使用List,就要学会使用List的实现类。

List三种常见的实现类:LinkedList、ArrayList、Vector

添加元素:

list1.add('a');  直接添加,可添加各种类型的元素,也可直接添加集合 

list1.add(list0);  将集合0添加到集合1中,集合0作为集合1的一项存在 

list1.add(2, "def");  在指定位置添加元素

list1.addAll(list0);  将集合0添加到集合1中,集合0中的每一个元素作为集合1的一项而存在

list1.addAll(4,list0);  将集合0添加到指定位置

删除元素:

list1.remove(4);  删除指定角标的元素
list1.remove("ai");  删除首次出现的指定元素
list1.removeAll(list0);   删除集合1中集合0的所有元素
list1.remove(list0);  删除集合1中集合0作为一项的所有元素

修改元素:

list1.set(2, "ai");   修改指定角标的元素

查找元素:

list1.get(1);  获取指定角标的元素

其他方法:

subList(0, 1);  获取两个角标之间的子集和
indexOf(1);     获取该元素第一次出现的角标
lastIndexOf(1);    获取该元素最后一次出现的角标
toArray(a);    将集合转化为给定类型的数组
toArray();    将集合转化为数组(无规定类型)

isEmpty();   判断集合是否为空

注:

(1)add与addAll的区别:

     add可添加任何类型的元素,包括集合。使用add添加的元素作为一项存在于集合中,如果添加的是一个集合,则这个集合整体作为原集合的一项。

     addAll只能添加集合类型。addAll添加的集合每一项作为原集合的每一项而存在

     如果使用add()添加集合,删除时只能使用remove()

     如果使用addAll()添加集合,删除的时候只能使用removeAll()

例如:

List<Character> list0 = new ArrayList<Character>();
for (char i = 'a'; i < 'g'; i++) {
     list0.add((char)i);
}
List<Object> list1 = new ArrayList<>();
list1.add(1);
list1.add(2);
list1.add(3);
list1.add(4);
list1.add(list0);
打印结果为[1, 2, abc, a, [a, b, c, d, e, f]]
list1.addAll(list0);
打印结果为[1, 2, abc, a, a, b, c, d, e, f]

(2)remove与removeAll的区别:

     remove可以删除集合中的每一项,既可以删除指定角标的元素,也可以删除指定元素。如果删除的元素有多个,之删除第一次出现的。

LinkedList特殊方法:

   * 添加元素 
addFirst() 将元素添加在链表的开端
addLast() 将元素添加在链表的末尾 
addAll() 添加集合,将集合每个元素作为链表的每个元素 
   * 删除元素 
removeFirst() 删除链表的第一个元素 
removeLast() 删除链表的最后一个元素 
   * 修改元素 
set(2, "123") 修改链表中指定角标对应的元素 
   * 查找元素 
getFirst() 获取链表开始的元素 
getLast() 获取链表末尾的元素

peek()  获取但不删除集合的第一个元素
peekFirst()  获取但不删除集合的第一个元素
peekLast()  获取但不删除集合的最后一个元素
poll()    获取并删除集合的第一个元素
pollFirst()  获取删除集合的第一个元素
linklist.pollLast()  获取删除集合的最后一个元素

使用效果:

   

集合的遍历:

迭代器


结果:


for循环


增强for循环

直接打印集合
 

三种List的实现类之间的区别:

LinkedList:

    链表形式的集合,通过指针存取数据,不论在任何地方,只要插入数据,救火分配内存空间,所以插入删除速度快,不支持随机查找,只能顺序查找,因此速度慢。

ArrayList:

    数组形式的集合,通过角标存取数据,每次在开始或中间插入删除数据,要移动该数据之后的所有元素,速度慢;而ArrayList支持随机查找,因此速度快。

Vector:

    与ArrayList相似,但Vector是同步的,所以线程安全。在多线程的情况下最好使用Vector。

    ArrayList每次扩充增加原来的50%,Vector每次扩充增加原来的一倍。





以上均为本人自己理解,若有错误,请指出,不胜感激!!!

0 0
原创粉丝点击