List实现类
一、List接口实现类
List分为ArrayList和LinkedList
ArrayList实现了长度可变的数组,在内存中分配连续的空间,遍历元素和随机访问元素的效率比较高
LinkedList采用链表存储方式,插入、删除元素时效率比较高
二、ArrayList集合类
例题
ArrayList news = new ArrayList();
//先创建ArrayList对象,再使用add方法添加元素or对象
news.add(newsTitles1);
// ArrayList的size()方法等同于数组的length属性的作用
System.out.println("长度为" + news.size());
//打印新闻标题
//for遍历
for (int i = 0; i < arrayList.size(); i++) {
// Arraylist中的元素都是Object类型的,需要大转小强转
NewsTitle newsTitle = (NewsTitle) arrayList.get(i);//get(i)等同于list[i]下标,
System.out.println(newsTitle.getTitle());
}
//for each 打印
for (Object obj : arrayList) {
NewsTitle newsTitle = (NewsTitle) obj;
System.out.println(newsTitle.getTitle());
}
-
ArrayList
- 是List接口的一个具体实现类
- 实现了可变大小的数组
- 随机访问和遍历元素时,它提供更好的性能
-
用到的方法
- add()
- size()
- get()
三、ArrayList常用方法
以上标红的方法为Collection通用方法add(),size(),contain(),remove()
Collection接口常用通用方法还有: clear()、isEmpty()、iterator()、toArray()
iterator()返回一个迭代器对象,该对象能顺序访问几个中的各个元素
toArray将集合转换为一个高寒集合所有元素的Object类型数组
//判断列表中是否包含某个元素
System.out.println(arrayList.contains(newsTitles1));//删除指定位置的列表元素
arrayList.remove(0);//删除指定元素
arrayList.remove(newsTitles1);
System.out.println(arrayList.contains(newsTitles1));
//清空集合
arrayList.clear();
System.out.println(arrayList.size());
//判断一个集合是否为空
System.out.println(arrayList.isEmpty());
ArrayList方法总结:
-
添加元素
-
add(Object o):此方法会在ArrayList末尾添加一个元素,如果添加成功返回true
-
add(int index,Object o):此方法会在指定的index位置插入Object,index不可以超过列表范围为0-list.size(),如果添加位置超过列表范围则会抛出异常
IndexOutOfBoundsException
,如果在列表中插入,会插入到对应位置,并将其他元素向后挪,
-
-
获取元素
- get(int index):该方法会返回ArrayList中的对应位置的元素,类型为Object,若要打印需要强转到对应类型,index超出列表范围,会抛异常
IndexOutOfBoundsException
- get(int index):该方法会返回ArrayList中的对应位置的元素,类型为Object,若要打印需要强转到对应类型,index超出列表范围,会抛异常
-
修改元素
- set(int index,Object o):用新元素o替换index位置的旧元素,并返回被替换的旧元素
-
删除元素
- remove(int index):删除ArrayList中指定的index位置的元素,并返回被删除的元素。索引越界抛异常
IndexOutOfBoundsException
- remove(Object o):删除对应首次出现的元素o,如果对象存在返回true,如果不存在则返回false
- remove(int index):删除ArrayList中指定的index位置的元素,并返回被删除的元素。索引越界抛异常
-
查询元素
- indexof(Object obj):返回指定对象obj在ArrayLi阿提中首次出现的索引,未找到返回-1
- lastIndexof(Object obj):返回obj最后一次出现的索引,未找到返回-1
-
获取列表大小
- size():返回ArrayList中元素的个数返回类型为int
-
判断是否为空
- isEmpty():判断ArrayList是否为空,为空则返回true,否则返回false
-
清空列表
- clear():溢出ArrayList中所有的元素,使列表为空列表,之后调用size则但会0
四、断点跟踪ArrayList
五、LinkedList集合
例题
LinkedList独有的方法
-
添加元素
- addFirst(object o):将指定元素插入列表的开头
- addLast(object o):将指定元素插入列表末尾
-
查找(返回的对象类型为Object类,若有其他需要需要强转)
- getFirst():直接返回链表的第一个元素,当链表为空的时候回抛出异常
NoSuchElementException
- getLast():直接返回链表的最后一个元素,当链表为空的时候回抛出异常
NoSuchElementException
- peekFirst()&peekLast():查看链表的第一个元素和最后一个元素,不移除它,若链表为空则返回null,可以在不确定链表是否为空的情况下安全获取头元素
- getFirst():直接返回链表的第一个元素,当链表为空的时候回抛出异常
-
删除
- removeFirst()&removeLast():移除并返回第一个元素和最后一个元素,空链表执行此操作会抛出
NoSuchElementException
- removeFirst()&removeLast():移除并返回第一个元素和最后一个元素,空链表执行此操作会抛出
**List list = new LinkedList()**父类引用指向子类对象
在使用共有方法时可以用,在使用子类独有方法时,不适用
六、断点跟踪LinkedList
七、异同
LinkedList与ArrayList-同∶
- 同为List实现类,元素有序、不唯一、长度可变共有Collection及List的通用方法
LinkedList与ArrayList-异:
- ArrayList实现了长度可变的数组,在内存中分配连续的空间,遍历元素和随机访问元素的效率比较高
LinkedList采用链表存储方式,插入、删除元素时效率比较高