什么是集合?
-
集合是一个大小可变的容器。
-
容器中的每个数据称为一个元素,数据==元素。
-
集合的特点是:类型不确定,大小不固定。
一 Collection集合体系:
上述实现类的特点
HashSet |
添加的元素是无序,不重复,无索引 |
TreeSet |
不重复,无索引,按照大小默认升序排序 |
LinkedHashSet |
添加的元素是有序,不重复,无索引 |
ArrayList |
添加的元素是有序,可重复,有索引 |
LinekdList |
添加的元素是有序,可重复,有索引 |
二 Collection集合的常用API:
boolean add(E e) |
把给定的对象添加到当前集合中 |
void clear() |
清空集合中所有的元素 |
boolean remove(E e) |
把给定的对象在当前集合中删除 |
boolean contains(Object obj) |
判断当前集合中是否包含给定的对象 |
boolean isEmpty() |
判断当前集合是否为空 |
int size() |
返回集合中元素的个数 |
Object[] toArray() |
把集合中的元素,存储到数组中 |
实际使用API
public class CollectionDemo {
public static void main(String[] args) {
// 此处是多态的形式
Collection<String> sets = new HashSet<>();
// 1.添加元素,添加成功返回true.
System.out.println(sets.add("贾乃亮")); // true
// HashSet:添加的元素是无序,不重复,无索引。
System.out.println(sets.add("贾乃亮")); // false
System.out.println(sets.add("王宝强")); // true
sets.add("陈羽凡");
System.out.println(sets); // 集合重写了toString()方法,默认打印出内容信息
// 2.清空集合的元素。
sets.clear();
//System.out.println(sets);
// 3.判断集合是否为空 是空返回true 反之
System.out.println(sets.isEmpty()); // false
// 4.获取集合的大小
System.out.println(sets.size()); // 3
// 5.判断集合中是否包含某个元素 。
System.out.println(sets.contains("贾乃亮"));
// 6.删除某个元素:如果有多个重复元素默认删除前面的第一个!
sets.remove("陈羽凡");
System.out.println(sets);
// 7.把集合转换成数组
Object[] arrs = sets.toArray();
System.out.println("数组:"+ Arrays.toString(arrs));
String[] arrs1 = sets.toArray(String[]::new); // 以后再了解,指定转换的数组类型!
System.out.println("数组:"+ Arrays.toString(arrs1));
System.out.println("---------------------拓展---------------------------");
Collection<String> c1 = new ArrayList<>();
c1.add("李小璐");
c1.add("马蓉");
Collection<String> c2 = new ArrayList<>();
c2.add("白百合");
c1.addAll(c2); // 把c2集合的元素全部倒入到c1
System.out.println(c1);
}
}
三 Collection集合的遍历方式
首先解释一下 该处为什么没有最喜欢的for循环,因为Collection是没有索引的,所以不能使用for循环!!!
1 迭代器
public class CollectionDemo01 {
public static void main(String[] args) {
Collection<String> lists = new ArrayList<>();
lists.add("赵敏");
lists.add("小昭");
lists.add("殷素素");
lists.add("周芷若");
System.out.println(lists);
// 1.得到集合的迭代器对象。
Iterator<String> it = lists.iterator();
// 2.使用while循环遍历。
while(it.hasNext()){
String ele = it.next();
System.out.println(ele);
}
}
}
2 foreach
foreach遍历的关键是记住格式: for(被遍历集合或者数组中元素的类型 变量名称 : 被遍历集合或者数组){ }
public class CollectionDemo02 {
public static void main(String[] args) {
Collection<String> lists = new ArrayList<>();
lists.add("赵敏");
lists.add("小昭");
lists.add("殷素素");
lists.add("周芷若");
System.out.println(lists);
// lists = [赵敏, 小昭, 殷素素, 周芷若]
for (String ele : lists) {
System.out.println(ele);
}
}
}
3 Lambda表达式
public class CollectionDemo03 {
public static void main(String[] args) {
Collection<String> lists = new ArrayList<>();
lists.add("赵敏");
lists.add("小昭");
lists.add("殷素素");
lists.add("周芷若");
System.out.println(lists);
// [赵敏, 小昭, 殷素素, 周芷若]
lists.forEach(s -> {
System.out.println(s);
});
// lists.forEach(s -> System.out.println(s));
// lists.forEach(System.out::println);
}
}