什么是集合
集合与数组一样,可以保存一组元素,并且提供了操作元素的相关方法,使用更方便.
java集合框架中相关接口
java.util.Collection接口:
java.util.Collection是所有集合的顶级接口.Collection下面有多种实现类,因此我们有更多的数据结构可供选择.
Collection下面有两个常见的子接口:
这里可重复指的是集合中的元素是否可以重复,而判定重复元素的标准是依靠元素自身equals比较
的结果.为true就认为是重复元素.
常用方法:
boolean add(E e):向集合中添加一个元素,成功添加则返回true
int size():返回当前集合的元素个数
boolean isEmpty():判断当前集合是否为空集.当且仅当size=0时返回true.
void clear():清空集合
- import java.util.ArrayList;
- import java.util.Collection;
-
- public class CollectionDemo {
- public static void main(String[] args) {
- Collection c = new ArrayList();
- /*
- boolean add(E e)
- 向当前集合中添加一个元素.当元素成功添加后返回true
- */
- c.add("one");
- c.add("two");
- c.add("three");
- c.add("four");
- c.add("five");
- System.out.println(c);
- /*
- int size()
- 返回当前集合的元素个数
- */
- int size = c.size();
- System.out.println("size:"+size);
- /*
- boolean isEmpty()
- 判断当前集合是否为空集(不含有任何元素)
- */
- boolean isEmpty = c.isEmpty();
- System.out.println("是否为空集:"+isEmpty);
- /*
- 清空集合
- */
- c.clear();
- System.out.println(c);
- System.out.println("size:"+c.size());//0
- System.out.println("是否为空集:"+c.isEmpty());
-
-
- }
- }
boolean contains(Object o):判断集合是否包含给定元素
boolean remove(Object o):从集合中删除给定元素,成功删除返回true.
- import java.util.ArrayList;
- import java.util.Collection;
- import java.util.HashSet;
-
- public class CollectionDemo2 {
- public static void main(String[] args) {
- // Collection c = new ArrayList();
- Collection c = new HashSet();
- c.add(new Point(1,2));
- c.add(new Point(3,4));
- c.add(new Point(5,6));
- c.add(new Point(7,8));
- c.add(new Point(1,2));
- /*
- 集合重写了Object的toString方法,输出的格式为:
- [元素1.toString(), 元素2.toString(), ....]
- */
- System.out.println(c);
-
- Point p = new Point(1,2);
- /*
- boolean contains(Object o)
- 判断当前集合是否包含给定元素,这里判断的依据是给定元素是否与集合
- 现有元素存在equals比较为true的情况。
- */
- boolean contains = c.contains(p);
- System.out.println("包含:"+contains);
- /*
- remove用来从集合中删除给定元素,删除的也是与集合中equals比较
- 为true的元素。注意,对于可以存放重复元素的集合而言,只删除一次。
- */
- c.remove(p);
- System.out.println(c);
- }
- }
boolean addAll(Collection c):将给定集合所有元素添加到当前集合中。
boolean removeAll(Collection c):删除当前集合中与给定集合的公有元素。
boolean containsAll(Collection c):判断当前集合是否包含给定集合中的所有元素。
- import java.util.ArrayList;
- import java.util.Collection;
- import java.util.HashSet;
-
- /**
- * 集合间的操作
- */
- public class CollectionDemo4 {
- public static void main(String[] args) {
- // Collection c1 = new ArrayList();
- Collection c1 = new HashSet();//不可重复元素
- c1.add("java");
- c1.add("c");
- c1.add("c++");
- System.out.println("c1:"+c1);
- Collection c2 = new ArrayList();
- c2.add("android");
- c2.add("ios");
- c2.add("java");
- System.out.println("c2:"+c2);
- /*
- boolean addAll(Collection c)
- 将给定集合中的所有元素添加到当前集合中。当前集合若发生了改变则返回true
- */
- boolean tf = c1.addAll(c2);
- System.out.println(tf);
- System.out.println("c1:"+c1);
- System.out.println("c2:"+c2);
-
- Collection c3 = new ArrayList();
- c3.add("ios");
- c3.add("c++");
- c3.add("php");
- System.out.println("c3:"+c3);
- /*
- boolean containsAll(Collection c)
- 判断当前集合是否包含给定集合中的所有元素
- */
- boolean contains = c1.containsAll(c3);
- System.out.println("包含所有元素:"+contains);
-
- /*
- boolean removeAll(Collection c)
- 删除当前集合中与给定集合中的共有元素
- */
- c1.removeAll(c3);
- System.out.println("c1:"+c1);
- System.out.println("c3:"+c3);
- }
- }
Iterator iterator():获取用于遍历当前集合的迭代器
T[] toArray(T[] t):将当前集合转换为一个数组。参数为要转换的数组。
迭代器
java.util.Iterator
迭代器用于遍历集合,不同的集合都提供了一个用于遍历自身元素的迭代器实现类。
使用迭代器遍历集合遵循的过程为:问->取->删。其中删除不是必要操作。
常用方法
boolean hasNext():判断集合是否还有"下一个"元素可以遍历
E next():获取集合下一个元素
void remove():从集合中删除迭代器当前位置的元素(通过next获取的元素)
- import java.util.ArrayList;
- import java.util.Collection;
- import java.util.Iterator;
-
-
- public class IteratorDemo {
- public static void main(String[] args) {
- Collection c = new ArrayList();
- c.add("one");
- c.add("two");
- c.add("three");
- c.add("four");
- c.add("five");
- System.out.println(c);
- //获取迭代器
- Iterator it = c.iterator();
- /*
- 迭代器提供的相关方法:
- boolean hasNext()
- 判断集合是否还有元素可以遍历
-
- E next()
- 获取集合下一个元素(第一次调用时就是获取第一个元素,以此类推)
- */
- while(it.hasNext()){
- String str = (String)it.next();
- System.out.println(str);
- }
- System.out.println(c);
-
- }
- }
集合转换为数组的操作
集合转换为数组,使用集合的toArray方法即可。 数组转换为集合,只能转换为List集合,使用的是Arrays.asList()方法。
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.List;
-
- /**
- * 集合转换为数组
- * Collection提供了方法toArray可以将当前集合转换为一个数组
- */
- public class CollectionToArrayDemo {
- public static void main(String[] args) {
- List
list = new ArrayList<>(); - list.add("one");
- list.add("two");
- list.add("three");
- list.add("four");
- list.add("five");
- System.out.println(list);
-
- String[] array = list.toArray(new String[list.size()]);
- System.out.println(array.length);
- System.out.println(Arrays.toString(array));
- }
- }
- import java.util.*;
-
- /**
- * 数组转换为集合
- * 数组的工具类java.util.Arrays提供了一个静态方法:asList
- * 该方法可以将一个数组转换为一个List集合
- */
- public class ArrayToListDemo {
- public static void main(String[] args) {
- String[] array = {"one","two","three","four","five"};
- System.out.println("array:"+ Arrays.toString(array));
-
- //asList方法会返回Arrays定义的内部类ArrayList,该集合内部直接引用给定数组array
- List
list = Arrays.asList(array); - System.out.println("list:"+list);
- //因为集合直接引用数组array,所以对该集合操作就是对array数组的操作
- list.set(1,"six");
- System.out.println("list:"+list);
- System.out.println("array:"+ Arrays.toString(array));
- //对数组操作后,集合也会改到改变.
- array[2] = "seven";
- System.out.println("array:"+ Arrays.toString(array));
- System.out.println("list:"+list);
- // list.add("!!!!!");
-
- /*
- 如果我们需要增删元素,可另行创建一个集合同时包含该集合元素即可.
- */
- List
list2 = new ArrayList<>(list);//等同于先new再addAll() - // Set
set = new HashSet<>(list);//等同于先new再addAll() -
- System.out.println("list2:"+list2);
- list2.add("!!!!");
- System.out.println("list2:"+list2);
-
-
- }
- }