List 集合
常用的list集合是ArrayList:一次只能储存一个元素!
1. 在创建这个集合的对象时:
一定要指定这个集合存储的数据类型! 否则这个集合的数据是不安全的。
2. 与数组的区别:
①数组的长度是固定的, 集合的长度是可变的。
②数组可以存储基本类型和引用数据类型的数据.集合不可以存储基本数据类型, 只能存储引用数据类型
3. 如果集合中需要存储基本类型的数据, 集合的类型必须指定为对应的包装类型
4. list集合中的常用方法 (E:element元素)
(1)add(E): 往集合中添加一个元素
(2)add(index,E): 把元素添加到指定的位置, 原来的内容会被挤到后面
(3)get(index): 通过索引获取集合中对应的内容
(4)size(): 获取集合的大小
(5)remove(index): 根据索引删除指定位置的内容, 返回被删除的元素
(6)remove(Object): 删除集合中的指定对象, 如果有多个相同的对象, 只会删除第一个
(7)contains(E): 判断集合中是否包含指定的元素
(8)indexOf(E): 获取元素在集合中第一次出现的位置
(9)lastIndexOf(E): 获取元素在集合中最后一次出现的位置
(10)isEmpty(): 判断集合中的元素是否为空
(11)set(index,E):把指定位置的内容修改掉,返回的是被修改的内容
(12)clear():清空集合中得所有元素
(13)toArray():把集合转换成Object数组,注意不能转换成其他数组!
因为toArray方法引入的比范型晚,为了兼容早期java代价,toArray保留了返回类型为Object
相关问题:
(1)关于remove();
1.
2.
(2)list集合排序:
Collections.sort
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Scanner;
public class Main5 {
public static void main(String[] args) {
ArrayList la = new ArrayList();
la.add(1);
la.add(2);
LinkedList ll = new LinkedList();
l.add(1);
l.add(2);
System.out.println(l.indexOf(4));
}
}
ArrayList内部是数组,进行增删时会氛围一个更大的内存,麻烦,但是查找方便
ArrayLIst查询效率高:ArrayLIst是连续存放元素的,找到第一个元素的首地址,再加上每个元素的占据的字节大小就能定位到对应的元素。
LinkedList插入删除效率高。因为执行插入删除操作时,只需要操作引用即可,元素不需要移动元素,他们分布在内存的不同地方,通过引用来互相关联起来。而ArrayLIst需要移动元素,故效率低
数组的插入也相当的浪费效率,如果要在数组内的某一个位置进行插入,需要先将插入位置的前面复制一份,然后在新的数组后面添加新的元素,最后将旧的数组后半部分添加的新的数组后面,而在链表中插入就变得相当简单了,比如我要在A3和A4中插入B,只需定位到A3的指针和A4的数据即可,将A3的指针指向B的值,将B的指针指向A4的值,B就插入进了链表.