常用子接口包括 List(80%)和Set(20%)
一般仅在需要用到排序的的时 排序 候才会用到Set集合,普通集合一般采用List.
| 方法类型 | 说 明 |
|---|---|
| boolean add(E e) | 先集合中添加数据 |
| void clear | 清空集合 |
| Boolean contains(Object o) | 判断一个元素是否存在 |
| iterator < E > iterator() | 为Iterator 接口实例化 |
| Boolean remove(Object o) | 删除元素 |
| int size() | 获取元素的个数 |
| Object [ ] toArray() | 将集合转换为数组对象输出 |
特点:
1.允许重复对象存在 2.可以有多个Null值
List 子接口核心类:ArraryList,linkList 和 Vetcor 三个。其中Vetcor 是最早的集合类,目前最常用的是ArraryList。
| 方法原型 | 说 明 |
|---|---|
| E get(int index) | 获取指定索引位置上的对象 |
| E set( int index ,E element | 修改指定索引位置上的对象 |
| Listiterator< E > listiterator() | 为listiterator接口实例化 |
ArrayList类的底层是使用类似于数组的形式来管理数据。数组是容量固定的,而ArrayList是动态扩容的。ArrayList的最大特征是查询效率高。
ArrayListlinkedListlist = new ArrayList<>(); list.add("hello"); list.add("hello");//允许重复值 list.add(null); list.add(null);//可以有多个null System.out.println("集合中的元素:"); for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } list.set(2, "hello world");//修改数据 list.remove(3);//删除数据 list.size();//获取集合中数据的个数 list.contains("hello");// 返回值boolean,查看list集合中时候含有"hello"数据 list.clear();//清除数据
linkedList底层使用双向循环链表实现,进行数据的插入和删除效率就比ArrayList高
linkedListVetcor(几乎用不到)list = new linkedList<>(); list.add("hello"); list.add("hello");//允许重复值 list.add(null); list.add(null);//可以有多个null System.out.println("集合中的元素:"); for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } list.set(2, "hello world");//修改数据 list.remove(3);//删除数据 list.size();//获取集合中数据的个数 list.contains("hello");// 返回值boolean,查看list集合中时候含有"hello"数据 list.clear();//清除数据
Vetcor最早实现动态数组功能的类,功能和ArrarList基本一致。唯一不同的是:Vetcor是 同步的,线程安全的,而ArraryList,linkList都是异步的,线程非安全的。Vetcor的性能比ArrarList要差。
Set接口及其实现类特点:
1.不允许重复对象存在 2.最多允许一个 Null
常用的实现类:HashSet(最常用) ,linkedSet ,TreeSet
如果要求消除重复,这个类型就必须要重写equals()方法和hashCode()方法。如果要实现自动排序,这个类型就必须要实现Comparable接口等等。
HashSetHashSet按照hash算法来存储和访问即合理的元素,因此拥有很好的存取和查找功能。
因为HashSet是通过计算得到存放的位置的,所以集合内的数据是没有确定顺序的。
Map里的一个元素由两部分组成,key和value,一个Map集合和Lst集合一样,也有很多元素
在这里插入图片描述



