目录
集合的体系结构
集合特点
List系列集合:添加的元素有序、可重复、有索引。
Set系列结合:添加的元素无序、不重复、无索引。
Collection是单列集合的祖宗接口,它的功能是全部单列集合都可以继承使用的。
方法名称 | 说明 |
---|---|
public boolean add(E e) | 把给定的对象添加到当前元素中 |
public void clear() | 清空集合中的所有元素 |
public boolean remove(E e) | 把给定的对象在当前集合中删除 |
public boolean contains(Object obj) | 判断当前集合集合是否包含给定的对象 |
public boolean isEmpty() | 判断当前集合是否为空 |
public int size( ) | 返回集合中的元素的个数/集合的长度 |
Collection是一个接口 不能直接创建对象所以只能创建它实现类的对象
import java.util.ArrayList;
import java.util.Collection;
public class CollectionDemo {
/**
* public boolean add(E e) 把给定的对象添加到当前元素中
* public void clear() 清空集合中的所有元素
* public boolean remove(E e) 把给定的对象在当前集合中删除
* public boolean contains(Object obj) 判断当前集合集合是否包含给定的对象
* public boolean isEmpty() 判断当前集合是否为空
* public int size( ) 返回集合中的元素的个数/集合的长度
*/
public static void main(String[] args) {
Collection<String> coll = new ArrayList<>();
//1.添加
coll.add("aaa");
coll.add("bbb");
coll.add("ccc");
System.out.println(coll);//[aaa, bbb, ccc]
//2.清空
coll.clear();
System.out.println(coll);//[]
//3.删除
coll.remove("aaa");
System.out.println(coll);//[bbb, ccc]
//判断元素是否包含
boolean aaa = coll.contains("aaa");
boolean bbb = coll.contains("bbb");
System.out.println(aaa);//false
System.out.println(bbb);//true
//判断当前集合是否为空
boolean empty = coll.isEmpty();
System.out.println(empty);//false
//返回集合中的元素的个数/集合的长度
int size = coll.size();
System.out.println(size);//2
}
}
Tip
添加元素:
如果往List系列集合中添加数据,永远返回true,因为List系列集合是允许元素重复的
如果往Set系列集合中添加数据,如果当前元素不存在则返回true,表示添加成功,如果当前要添加的元素存在则返回false,表示添加失败,因为Set系列的集合元素不允许重复删除元素:
Collection里面定义的是共性的方法,所以此时不能通过索引进行删除,只能通过元素对象进行删除
遍历
迭代器:
import java.util.ArrayList;
import java.util.Iterator;
public class Collection_Iterator {
public static void main(String[] args) {
//创建集合并添加元素
ArrayList<String> list = new ArrayList<>();
list.add("aaa");
list.add("bbb");
list.add("ccc");
list.add("ddd");
list.add("eee");
//获取迭代器对象
Iterator<String> iterator = list.iterator();
//利用循环不断去获取集合中的每一个元素
while (iterator.hasNext()){
//next()方法的两件事情,获取元素并往后移动
String next = iterator.next();
System.out.println(next);
}
}
}
运行结果:
增强for:
- 增强for的底层就是迭代器,为了简化迭代器的代码书写的。
- 它是JDK5之后出现的,其内部原理就是一个Iterator迭代器
- 所有的单列集合和数组才能用增强for进行遍历。
import java.util.ArrayList;
/**
* 格式
* for(数据类型 变量名:集合/数组)
* */
public class Collection_foreach {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("aaa");
list.add("bbb");
list.add("ccc");
list.add("ddd");
list.add("eee");
for (String s : list) {
System.out.println(s);
}
}
}
运行结果:
List系列集合特有的方法:
方法 | 说明 |
---|---|
void add(int index,E element) | 在此集合中的指定位置插入指定的元素 |
E remove(int index) | 删除指定索引处的元素。返回被删除的元素 |
E set(int index,E element) | 修改指定索引处的元素,返回被修改的元素 |
E get(int index) | 返回指定索引处的元素 |
import java.util.ArrayList;
import java.util.List;
/**
* List系列集合独有的方法:
* void add(int index,E element)在此集合中的指定位置插入指定的元素
* E remove(int index) 删除指定索引处的元素。返回被删除的元素
* E set(int index,E element) 修改指定索引处的元素,返回被修改的元素
* E get(int index) 返回指定索引处的元素
*
* */
public class ListDemo {
public static void main(String[] args) {
//创建一个集合
List<String> list = new ArrayList<>();
//添加元素
list.add("aaa");
list.add("bbb");
list.add("ccc");
list.add("ddd");
//void add(int index,E element)在此集合中的指定位置插入指定的元素
list.add(1,"eee");//[aaa, eee, bbb, ccc, ddd]
System.out.println(list);
//E remove(int index) 删除指定索引处的元素。返回被删除的元素
String remove = list.remove(2);
System.out.println(remove);//bbb,返回删除的元素
System.out.println(list);//[aaa, eee, ccc, ddd]
//E set(int index,E element) 修改指定索引处的元素,返回被修改的元素
String qqq = list.set(1, "qqq");
System.out.println(qqq);//eee,返回被修改的元素
System.out.println(list);//[aaa, qqq, ccc, ddd]
//E get(int index) 返回指定索引处的元素
String get = list.get(0);
System.out.println(get);//aaa
}
}