Java基础笔记22- 集合
-
简介
- 集合是类似于数组的容器,不同的是数组是固定大小,且存放的是同一数据类型的数据,集合的大小不固定,可存放不同数据类型的数据(只能存放引用数据类型,基本数据类型数据存放的是其包装类),可以进行对内部数据(被称为元素)的增加,删除,判断。
- 一部分集合是有序的,也有一部分集合是无序的,集合根据存储方式的不同也分为单列集合与双列集合。
- 集合关键字:Collection 单列集合 Map 双列集合
1.Collection 单列集合
-
List 有序集合
-
Set 无序集合
-
Collection是一种接口,使用时需要创建子类对象来对元素进行操作,可通过ArrayList()来接收元素。
-
Collection coll = new ArrayList();
-
1.1 常用Collection方法
-
添加
- add(Object obj) addAll(Collection coll)
-
移除
- remove(Object obj) removeAll(Collection coll) clear()
-
判断
- isEmpty() constains(Object obj) constainsAll(Collection coll)
-
代码示例:
import java.util.ArrayList;
import java.util.Collection;
public class CollectionDemo {
public static void main(String[] args) {
//创建一个集合
Collection coll1 = new ArrayList();
//添加一个元素
coll1.add("元素1");
coll1.add(1111);
coll1.add(1111);
coll1.add("abc");
System.out.println("集合coll1:"+coll1);
Collection coll2 = new ArrayList();
//add()添加一个元素
coll2.add("元素2");
coll2.add(1111);
coll2.add(2222);
coll2.add("def");
System.out.println("集合coll2:"+coll2);
//contains()查询一个元素是否在集合中,返回布尔值
System.out.println("abc是否在coll1中:"+coll1.contains("abc"));//true
//remove()删除一个指定元素,若有重复元素删除其中一个,若没有此元素,无变化
coll1.remove(1111);
coll1.remove(1010);
System.out.println("删除一个元素后的coll1:"+coll1);
//addAll()将一个集合全部添加到另一个集合中去
coll1.addAll(coll2);
System.out.println("coll1中添加coll2后:"+coll1);
//判断一个集合是否是另一个集合的子集,返回布尔值
System.out.println("coll2是否是coll1的子集:"+coll1.containsAll(coll2));//true
//removeAll()将两个集合中共有的元素全部删除,有些元素有重复的多个,只要交集中有相同元素,重复的元素都会被删除
coll1.removeAll(coll2);
System.out.println("移除交集后的coll1:"+coll1);
//clear() 清除所有元素
coll1.clear();
System.out.println("清空后的集合:"+coll1);
//isEmpty()判断一个集合是否是空集合,返回布尔值
System.out.println("coll1是否是空集合:"+coll1.isEmpty());
}
}
输出:
集合coll1:[元素1, 1111, 1111, abc]
集合coll2:[元素2, 1111, 2222, def]
abc是否在coll1中:true
删除一个元素后的coll1:[元素1, 1111, abc]
coll1中添加coll2后:[元素1, 1111, abc, 元素2, 1111, 2222, def]
coll2是否是coll1的子集:true
移除交集后的coll1:[元素1, abc]
清空后的集合:[]
coll1是否是空集合:true
1.2 迭代器
-
关键字:Iterator
-
作用是遍历数组
-
迭代器的使用主要有以下三个方面的注意事项:
1)使用容器的iterator()方法返回一个Iterator,然后通过Iterator的next()方法返回第一个元素。
2)使用Iterator()的hasNext()方法判断容器中是否还有元素,如果有,可以使用next()方法获取下一个元素。
代码示例:
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class IteratorDemo {
public static void main(String[] args) {
method();
}
public static void method() {
//创建一个集合
Collection coll1 = new ArrayList();
//添加一个元素
coll1.add("元素1");
coll1.add(11111);
coll1.add("元素2");
System.out.println("集合coll1:"+coll1);
//iterator()迭代器,作用是遍历集合
Iterator it = coll1.iterator();
//遍历集合
//需要先使用hasNext()判断是否有下一个元素
while(it.hasNext()) {
//使用next()来获取下一个元素
System.out.println(it.next());
}
}
}
输出:
集合coll1:[元素1, 11111, 元素2]
元素1
11111
元素2
- 使用迭代器获取指定数据类型的元素,将上述迭代器代码更换为以下代码
//需要先判断是否有下一个元素
while(it.hasNext()) {
//创建一个对象接收下一个元素
Object obj = it.next();
System.out.println(obj);
//判断元素是否属于字符串,若是则输出
if (obj instanceof String) {
String str = (String)obj;
System.out.println(str);
}
}
输出:
元素1
元素2
1.3 List 单列集合
- List接口中允许重复、有序(输入输出顺序) 数组的数据结构(底层维护的是一个数组) 查询快、增删慢
- 常见的子类
- ArrayList
- 使用的是数组数据结构,查询快,增删慢
- LinkedList
- 使用的是数组链表数据结构,增删快,查询慢
- ArrayList
代码示例
import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
public class ListDemo {
public static void main(String[] args) {
method();
removeMethod();
}
/**
* List集合迭代器演示
*/
public static void method() {
List list = new ArrayList();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(1);
//获取迭代器
ListIterator listIt = list.listIterator();
//遍历 next()是指针从开始往后查询下一个元素
while(listIt.hasNext()) {
System.out.println(listIt.next());
}
System.out.println("-------");
//在上一个迭代器结束后,指针指向了最后一个元素,所以可以开始逆向再遍历一次
//逆序遍历
//hasPrevious()确认指针前面上一个有元素
while(listIt.hasPrevious()) {
//previous()获取上一个元素
System.out.println(listIt.previous());
}
}
/**
* List集合根据下标增加和移除元素演示
*/
public static void changeMethod() {
List list = new ArrayList();
list.add("元素一");
list.add("元素二");
list.add("元素三");
//删除指定下标位置元素
list.remove(1);
System.out.println(list);//[元素一, 元素三]
//在指定下标位置添加元素
list.add(1, "元素四");
System.out.println(list);//[元素一, 元素四, 元素三]
//get(int index)获取指定下标位置的元素
System.out.println(list.get(1));//元素四
}
}