Collection
collection特点:
List系列集合:添加的元素是有序、可重复、有索引。
ArrayList、LinekdList :有序、可重复、有索引
Set系列集合:添加的元素是无序、不重复、无索引。
HashSet: 无序、不重复、无索引;
LinkedHashSet: 有序、不重复、无索引。
TreeSet:按照大小默认升序排序、不重复、无索引。
Collection代表单列集合,每个元素(数据)只包含一个值。
Map代表双列集合,每个元素包含两个值(键值对)
collection-API常用方法代码引用:
1、添加数据 boolean add(E e)
Collection<String> list = new ArrayList<>(); // 多态
2、清空集合
list.clear();
3、判断集合是否为空
System.out.println(list.isEmpty());
4、直接删除集合中的某个数据:默认只能删除第一个数据
list.remove("小脑瓜");
System.out.println(list);
5、判断集合中是否包含某个数据:
System.out.println(list.contains("小宝"));
System.out.println(list.contains("小宝2"));
6、获取集合的大小(元素个数)
System.out.println(list.size());
7、把集合转化成数组。
Object[] array = list.toArray();
System.out.println("内容:" + Arrays.toString(array));
8、把别人集合的数据加给自己.
Collection<String> c1 = new ArrayList<>(); // 多态
c1.add("java1");
c1.add("java2");
c1.addAll(c2); // 把别人集合的数据加给自己.
Collection集合的遍历、迭代器遍历
得到集合的迭代器对象,然后两种方式遍历
Iterator<String> it = list.iterator();
死循环遍历
while (it.hasNext()) {
String name = it.next();
System.out.println(name);
}
增强for(foreach遍历)遍历
String[] names = {"王一博", "吴亦凡", "蔡徐坤", "马保国"};
for (String name : names) {
System.out.println(name);
}
System.out.println(Arrays.toString(names));
}
lambda表达式遍历
list.forEach(new Consumer<String>() {
@Override
public void accept(String s) {
System.out.println(s);
}
});
三种遍历的区别
迭代器遍历:多用于删除与修改迭代表达式
for (String name : names) {
if(name.contains("枸杞")){
names.remove(name);
}
}
System.out.println(names);
增强for循环:多用于查看该collection的所有元素
Iterator<String> it = names.iterator();
while (it.hasNext()) {
String name = it.next();
if (name.contains("枸杞")) {
// names.remove(name); // 如果用集合的方法删除,还是出差!
it.remove(); // 使用迭代器自己的删除方法,删除当前迭代器遍历到的数据!就不会出现bug!
}
}