前言
集合很有意思,也比较容易理解。全是干货。。。有案例有代码有文字说明,非常好理解。个人认为知识点比较全面。如果有什么遗漏的地方还请大佬和我说一下,如果有,下次我会采纳意见滴。
一、Collection接口对集合的操作
1.案例描述
练习目标
掌握Collection接口中方法的使用
需求分析
Collection是所有单列集合的父接口,在Collection中定义了单列集合(List和Set)通用的一些方法。为了让初学者熟悉Collection接口中的常用方法,本案例将演示Collection接口中的方法对集合进行操作来学习方法的使用。
设计思路(实现原理)
1.编写一个类Example01
2.在类中定义两个Collection集合,并向其中一个集合中添加数据
3.用Collection接口中的方法对定义的两个集合进行各种操作
2.案例实现
代码内容
package JHClass;
import java.util.ArrayList;
import java.util.Collection;
public class Example01 {
public static void main(String[] args) {
// 定义集合
Collection col1 = new ArrayList();
col1.add("123abc");
col1.add(123);
col1.add(34.121);
Collection col2 = new ArrayList();
// 判断集合是否为空
boolean a = col1.isEmpty();
boolean b = col2.isEmpty();
System.out.println("col1集合是否为空:"+a);
System.out.println("col2集合是否为空:"+b);
// 将集合col1中的元素添加到 col2中
col2.addAll(col1);
System.out.println("col1集合中的元素添加到 col2后,col2集合:"+col2);
// 获取两个集合的交集
boolean c = col1.retainAll(col2);
System.out.println("col1和col2集合是否有交集:"+c);
// 清除集合col2中的元素
col2.clear();
System.out.println("清除集合col2中的元素后,col2集合::"+col2);
// 获取集合中元素的个数
int size = col1.size();
System.out.println("col1集合中元素的个数:"+size);
}
}
运行结果
3.案例总结
1、Collection是所有单列集合的父接口,因此在Collection中定义了单列集合(List和Set)通用的一些方法,这些方法可用于操作所有的单列集合。
方法声明 |
功能描述 |
boolean add(Object o) |
向集合中添加一个元素 |
boolean addAll(Collection c) |
将指定Collection中的所有元素添加到该集合中 |
void clear() |
删除该集合中的所有元素 |
boolean remove(Object o) |
删除该集合中指定的元素 |
boolean removeAll(Collection c) |
删除指定集合中的所有元素 |
boolean isEmpty() |
判断该集合是否为空 |
boolean contains(Object o) |
判断该集合中是否包含某个元素 |
boolean containsAll(Collection c) |
判断该集合中是否包含指定集合中的所有元素 |
Iterator iterator() |
返回在该集合的元素上进行迭代的迭代器(Iterator),用于遍历该集合所有元素 |
int size() |
获取该集合元素个数 |
2、在编译案例时,会得到如图7-2所示的警告,意思是说在使用ArrayList集合时并没有显示的指定集合中存储什么类型的元素,会产生安全隐患,这涉及到泛型安全机制的问题。此警告对程序输出结果没有影响。
3、在编写程序时,不要忘记使用import java.util.*;语句导包,否则程序将会编译失败,显示类找不到。
二、List接口的特有方法
1.案例描述
练习目标
掌握List接口的常用方法的使用
需求分析
List作为Collection集合的子接口,不但继承了Collection接口中的全部方法,而且还增加了一些根据元素索引来操作集合的特有方法。为了熟悉List接口中特有方法的使用,本案例将演示使用List接口中的方法对List集合进行添加、修改等操作。
设计思路(实现原理)
1.编写一个类Example02
2.在类中定义两个list集合,并向其中一个集合中添加数据。
3.用 subList(int fromIndex, int toIndex)方法获取集合的一部分
4.用set(int index, E element)方法修改一个元素
5.用add(int index, E element)方法增加一个元素
2.案例实现
代码如下
package JHClass;
import java.util.*;
public class Example02{
public static void main(String[] args) {
List list = new ArrayList();
list.add("abc1"); //add()方法添加元素
list.add("abc2");
list.add("abc3");
list.add("abc4");
System.out.println(list);
List newList = list.subList(0, 2);//subList()方法获取集合的前两个元素
System.out.println(newList);
Object o = list.set(0, "haha");//set()方法修改指定位置元素值为haha
System.out.println(list);
System.out.println(o);
list.add(0, "QQ");//add()方法在集合指定位置增加一个元素QQ
System.out.println(list);
}
}
运行结果
3.案例总结
1、在List集合中允许出现重复的元素,所有的元素是以一种线性方式进行存储的,在程序中可以通过索引来访问集合中的指定元素。另外,List集合还有一个特点就是元素有序,即元素的存入顺序和取出顺序一致。
2、List作为Collection集合的子接口,不但继承了Collection接口中的全部方法,而且还增加了一些根据元素索引来操作集合的特有方法。
方法声明 |
功能描述 |
void add(int index,Object element) |
将元素element插入在List集合的index处 |
boolean addAll(int index,Collection c) |
将集合c所包含的所有元素插入到List集合的index处 |
Object get(int index) |
返回集合索引index处的元素 |
Object remove(int index) |
删除index索引处的元素 |
Object set(int index, Object element) |
将索引index处元素替换成element对象,并将替换后的元素返回 |
int indexOf(Object o) |
返回对象o在List集合中出现的位置索引 |
int lastIndexOf(Object o) |
返回对象o在List集合中最后一次出现的位置索引 |
List subList(int fromIndex, int toIndex) |
返回从索引fromIndex(包括 )到 toIndex(不包括)处所有元素集合组成的子集合 |
三、ArrayList集合的存取
1.案例描述
练习目标
了解ArrayList集合的特点
掌握对ArrayList集合中元素的存取操作
需求分析
ArrayList是List接口的一个实现类,ArrayList集合中大部分方法都是从父类Collection和List继承过来的。为了熟悉ArrayList集合的使用,本案例将演示ArrayList集合的定义、存储元素和取出元素。
设计思路(实现原理)
1.编写一个类Example03
2.在类中定义一个ArrayList集合
3.用add()方法向集合中添加元素
4.用get()方法获取集合中的指定元素,由于ArrayList集合的索引的取值范围是从0开始的,最后一个索引是size-1。所以,要获取集合中的第2个元素应该是get(1)。
2.案例实现
代码如下
package JHClass;
import java.util.*;
public class Example03{
public static void main(String[] args) {
ArrayList array = new ArrayList();
array.add("lisi");
array.add("wangwu");
array.add("jordan");
array.add("jackson");
array.add("white");
System.out.println(array);
System.out.println("第2个元素是:" + array.get(1));
}
}
运行结果
3.案例总结
1、在ArrayList内部封装了一个长度可变的数组对象,当存入的元素超过数组长度时,ArrayList会在内存中分配一个更大的数组来存储这些元素,因此可以将ArrayList集合看作一个长度可变的数组。
2、索引位置为1的元素是集合中的第二个元素,这就说明集合和数组一样,索引的取值范围是从0开始的,最后一个索引是size-1,在访问元素时一定要注意索引不可超出此范围,否则会抛出角标越界异常IndexOutOfBoundsException。
3、由于ArrayList集合的底层是使用一个数组来保存元素,在增加或删除指定位置的元素时,会导致创建新的数组,效率比较低,因此不适合做大量的增删操作。但这种数组的结构允许程序通过索引的方式来访问元素,因此使用ArrayList集合查找元素很便捷。
四、 LinkedList集合的特殊方法
1.案例描述
练习目标
了解LinkedList集合的特点
掌握LinkedList集合的特殊方法的使用
需求分析
ArrayList集合在查询元素时速度很快,但在增删元素时效率较低,为了克服这种局限性,可以使用List接口的另一个实现类LinkedList。LinkedList集合除了对于元素的增删操作具有很高的效率,还专门针对元素的增删操作定义了一些特有的方法。为了熟悉这些特殊的方法,本案例将演示如何使用LinkedList中的特殊方法对集合进行增删操作。
设计思路(实现原理)
1.编写一个类Example04,在该类中定义一个LinkedList集合
2.分别使用addFirst()和addLast()方法向集合中添加元素
3.使用peekFirst()方法获取集合中的第一个元素
4.使用pollFirst()方法获取并移除集合中的第一个元素
5.使用pollLast()方法获取并移除集合中的最后一个元素
6.此时,集合中应该没有元素了,用peekLast()方法获取集合中的最后一个元素,由于集合为空,应该返回NULL
2.案例实现
代码如下
package JHClass;
import java.util.*;
public class Example04 {
public static void main(String[] args) {
LinkedList link = new LinkedList();
link.addFirst("abc1"); //将指定元素插入此集合的开头
link.addLast("haha"); //将指定元素添加到此集合的结尾
System.out.println(link.peekFirst());//获取但不移除此集合的第一个元素
System.out.println(link.pollFirst());//获取并移除此集合的最后一个元素
System.out.println(link);
System.out.println(link.pollLast());//获取并移除此集合的第一个元素
System.out.println(link);
System.out.println(link.peekLast());//获取并移除此集合的最后一个元素
}
}
3.案例总结
1、LinkedList集合内部维护了一个双向循环链表,链表中的每一个元素都使用引用的方式来记住它的前一个元素和后一个元素,从而可以将所有的元素彼此连接起来。当插入一个新元素时,只需要修改元素之间的这种引用关系即可,删除一个节点也是如此。正因为这样的存储结构,所以LinkedList集合对于元素的增删操作具有很高的效率。
2、在本案例中,所用的方法及其功能具体如下:
(1)peekFirst()方法用于获取LinkedList集合中的第一个元素,如果此列表为空则返回NULL
(2)peekLast()方法用于获取LinkedList集合中的最后一个元素,如果此列表为空则返回NULL
(3)pollFirst()方法用于获取并移除LinkedList集合中的第一个元素,如果此列表为空则返回NULL
(4)pollLast()方法用于获取并移除LinkedList集合中的最后一个元素,如果此列表为空则返回NULL
(5)addFirst()方法用于添加LinkedList集合中的第一个元素
(6)addLast()方法用于添加LinkedList集合中的最后一个元素
总结
啊啊啊,终于做完了。看到这里的给博主个三连不过分吧。。。动动你们可爱的小手指呗,明天还是集合,这次集合做的保证一次比一次好。排版啥的还在练,现在的排版着实有些单调,有时间看来得学下MD了。。。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/114675.html