集合的体系结构
Collection 单列集合 Map 双列集合
Collection 代表单列集合,每个元素(数据)只包含一个值。
Map代表双列集合,每个元素包含两个值(键值对)。
Collection 接口、实现类
List系列集合:添加的元素是有序、可重复、有索引
ArrayList、LinekdList:有序、可重复、有索引
Set系列集合:添加的元素是无序、不重复、无索引。
HashSet :无序、不重复、无索引;
LinkedHashSet:有序、不重复、无索引。
TreeSet:按照大小默认升序排序、不重复、无索引。
java"> public class CollectionTest1{public static void main(String [] args){//简单确认一下Collection集合的特点ArrayList<String> list = new ArrayList<>();list.add("java1");list.add("java2");list.add("java1");list.add("java2");System.out.println(list); HashSet<String> set = new HashSet();set.add("java1");set.add("java2");set.add("java1");set.add("java2");set.add("java3");System.out.println(set);}}
Collection 的常用方法
为啥先要学Collection的常用方法?
java"> public class CollectionTest2API{public static void main(String[] args){Collection <String> c = new ArrayList<>();//多态写法。//1.public boolean add(E e):添加元素,添加成功返回truec.add("java1");c.add("java1");c.add("java2");c.add("java2");c.add("java3");System.out.println(c);//2.public void clear();清空集合元素。c.clear();System.out.println(c);//3.public boolean isEmpty() :判断集合是否为空 是空返回true,反之。System.out.println(c.isEmpty());//false//4.public int size() :获取集合大小System.out.println(c.size());//5.public boolean contains(Object obj):判断集合中是否包含某个元素。System.out.println(c.contains("java1"));System.out.println(c.contains("Java1"));//6.public boolean remove(E e) 删除某个元素:如果有多个重复元素默认删除前面的第一个;System.out.println("java1");System.out.println(c);//7、public Object[] toArray(); 把集合转换成数组Obejct[] arr = c.toArray();System.out.println(Arrays.toString(arr));String[]arr2 = c.toArray(new String[c.size()]);System.out.println(Arrays.toString(arr2));System.out.println("-------------------------");//把一个集合的全部数据倒入到另一个集合中去。Collection<String> c1 = new ArrayList<>();c1.add("java");c1.add();Collection<String> c2 = new ArrayList<>();c2.add("java3");c2.add("java4");System.out.println(c1);System.out.println(c2);}}
常见方法如下:
方法名 | 说明 |
---|---|
public boolean add(E e) | 把给定的对象添加到当前的集合中 |
public void clear() | 清空集合中所有的元素 |
public boolean contains(Object obj) | 判断当前集合中是否包含给定的对象 |
public boolean isEmpty() | 判断当前集合是否为空 |
public int size() | 返回集合中元素的个数。 |
public Object[] toArray() | 把集合中的元素,存储到数组中 |
Collection 的遍历方式
迭代器概述
迭代器是用来遍历集合的专用方式(数组没有迭代器),在Java中迭代器的代表是Iterator
Collection集合获取迭代器的方法
方法名称 | 说明 |
---|---|
Iterator iterator | 返回集合器中的迭代器对象,该迭代器对象默认指向当前集合的第一个元素 |
方法名称 | 说明 |
---|---|
boolean hasNext() | 询问当前位置是否有元素存在,存在返回true,不存在返回false |
E next() | 获取当前位置的元素,并同时将迭代器对象指向下一元素处。 |
java"> public class CollectionDemo{public static void main(String[] args){Collection<String> c = new ArrayList<>();c.add("赵敏");c.add("小昭");c.add("素素");c.add("灭绝");System.out.println(c);//使用迭代器遍历集合//1、从集合对象中获取迭代对象。Iterator<String> it = c.iterator();//System.out.println(it.next());//System.out.println(it.next());//System.out.println(it.next());//2、我们应该使用循环结合迭代器遍历集合while(it.hasNext()){String ele = it.next();System.out.println(ele);System.out.println(it.next());System.out.println(it.next());}}}
增强for循环
for(元素的数据类型 变量名:数组或者集合)
{
}
Collection <String> c = new ArrayList<>();
...for(String s : c){System.out.println(s);}
增强for可以用来遍历集合或者数组
增强for遍历集合,本质就是迭代器遍历集合的简化写法
java"> public class CollectionDemo{public static void main(String[] args){Collection<String> c = new ArrayList<>();c.add("赵敏");c.add("小昭");c.add("素素");c.add("灭绝");System.out.println(c);for(String ele :c){System.out.println(ele);}String [] names = {"迪丽热巴",“古力娜扎”,“嘻嘻哈哈”};for(String name :names){System.out.println(ele);}}}
增强for可以用来遍历集合或者数组
增强for遍历集合,本质就是迭代器遍历结合简化写法
Lambda 表达式遍历集合
得益于JDK8开始的新技术Lambda表达式,提供了一种更简单、更直接的方式来遍历集合。
需要使用Collection的如下方法来完成
方法名称 | 说明 |
---|---|
default void forEach(Consumer<? super T> action) | 结合lambda遍历集合 |
java"> public class CollectionDemo{public static void main(String[] args){Collection<String> c = new ArrayList<>();c.add("赵敏");c.add("小昭");c.add("素素");c.add("灭绝");System.out.println(c);//default void forEach(Consumer<? super T> action):结合Lambda表达式遍历集合c.forEach(new Consumer<String> (){@Overridepublic void accept(String s){System.out.println(s);}});c.forEach((String s) ->{System.out.println(s);});c.forEach(s-> System.out.println(s));c.forEach(System.out::println);}}