子接口:List与Set,Queue
List:列表 它的实现 有序(存储时与添加顺序相关)
可重复(存储的元素可以是同一个,也可以是不同个)重复与否跟equals方法有关
有对应索引(下标)
List<String> list = new ArrayList<String>();//创建list数组
list.add("java");
/*创建一个集合存储 1象限 x=y的五个整数点,将点(10,2)插入到集合的第三个位置上*/
List<Point> c = new ArrayList<Point>();
c.add(new Point(1,1));
==============================================================
void add(int index,E element)将元素插入index处,剩下元素后移
list.add(2,"python");
E get(int index)返回下标元素
int indexOf(Object obj)返回元素第一次出现的位置
E set(int index,e) 替换
/*使用(-1,-1)替换第三个元素*/
Point oldPoint = c.set(2,new Point(-1,-1));
boolean remove(int index) 移除
/*移除集合c中的(2,2)*/
c.remove(new Point(2,2));
/*移除集合c中第0个元素*/
c.remove(0);
System.out.println(c);
List<E> subList(int formIndex,int endIndex):截取集合一部分,包前不包后
PS:在堆中不会产生新对象,变量引用父集的一部分
/*截取元素[4,5,6,7,8]*/
List<Integer> sub = nums.subList(3,8);//sub
System.out.println(sub);
int lastIndexOf(Object o)查看o最后一次出现的位置
/*查看最后一个10位置*/
System.out.println(nums.lastIndexOf(10));
=======================================================================
List实现类(3个):
(1)ArrayList(数据结构)
底层基于动态(扩容所容都为新对象)数组,有存放顺序,
执行get()、set()、效率高
执行增删操作,效率低(需要扩容所容,窜下标,移动元素)(数据多明显),
(2)LinkedList(数据结构)
底层基于双链表,每个存储单元都涉及其他两个引用
执行get()、set()、效率低(需要移动指针)
执行增删操作,效率高(数据多明显)
(3)Vector:集合类型(比较古老),线程安全,效率低,安全,但不建议使用