【Java-集合】Java中的单列集合Collection接口详解

1. Collection 接口的超级接口

Iterable(接口):
    1.含义:可迭代的
    2.方法:Iterator(迭代器)

2. Collection 接口中的方法

1.add

2.size

3.addAll(collection)

  把指定集合collection中所有元素添加到此集合

4.isEmpty

 判断此集合是否有元素

5.clear

 移除此集合中所有元素

6.contains(Object o)

 判断此集合是否包含o 注意:调用的是equals方法

7.containsAll(Collection c)

 此集合包含指定集合c中所有元素,则返回true 注意:包含关系

8.remove(Object o)

 从此集合中移除元素o 注意:涉及对象的话,调用的是equals方法

9.removeAll(Collection c)

 从此集合中移除此集合与c交集部分

10.retainAll(Collection c)

 仅保留此集合与集合c的交集部分

11.equals(Object o)

 比较此集合与指定对象是否相等,相当于比较两个集合元素是否一样

12.hashCode()

 返回此集合的哈希值

13.toArray()

 把此集合转换成 Object[ ] 并返回

13+.数组–>集合

    List list = Arrays.asList(new String[]{“aa”,“bb”});

注意:
    List arr = Arrays.asList(new int[]{123,456}); //此时是int数组的地址值存入集合
    List arr = Arrays.asList(new Integer[]{123.456}); //这才存入的是数组的元素

14.iterator()

 返回在此集合上进行迭代的迭代器


结论:向Collection接口实现类的对象中添加Object数据时,需要重写equals方法。

3. Collection 接口的子接口

3.1 List 接口(JDK1.2出现):元素有序,可重复的“动态数组”

3.1.1 List 接口的方法

1.void add(int index,Object ele):

   在index位置插入ele元素

2.boolean addAll(int index,Collection eles):

  从index位置开始把eles集合插入

3.Object get(int index):

  获取index位置的元素

4.int indexOf(Object obj):

  返回obj在集合中首次出现的位置

5.int lastIndexOf(Object obj):

   返回obj在集合最后一次出现的位置

6.Object remove(int index):

  移除指定index位置的元素,并返回此元素

7.Object set(int index,Object obj):

  设置index位置的元素为obj

8.List subList(int fromIndex,int toIndex):

   返回从fromIndex到toIndex位置的子集合

3.1.2 List 接口的实现类

1.ArrayList(实现类,JDK1.2出现)
  1.介绍:作为List主要实现类;线程不安全,效率高;底层使用Object[]存储;
  第一次调用add创建长度为10的Object[]数组;不够就扩容为原来的1.5倍;

2.LinkedList(实现类,JDK1.2出现)
  1.介绍:底层使用双向链表存储;线程不安全;

3.Vector(实现类,JDK1.0出现)
  1.介绍:作为List接口的古老实现类;线程安全,效率低;底层使用Object[]存储;
  底层创建长度为10的Object[];扩容为原来的2倍;

3.1.3 List 集合的遍历

1.迭代器
2.forEach
3.普通for

3.2 Set 接口:元素无序,不可重复的“高中集合”

3.2.1 Set接口介绍

1.Set接口中没有定义新方法,Hash表+数组,底层是HashMap。

2.Set存储的无序的、不可重复的数据;HashSet为例:

   1.无序性:不等于随机性。存储的数据在底层数组中并非按照数组索引顺序添加,而是根据数据的哈希值决定数据在数组中的位置。

   2.不可重复性:equals进行比较,相同元素只能添加一个。3.添加元素的过程,HashSet为例
在这里插入图片描述

4.要求:向Set中添加的数据,其所在的类一定要重写hashCode()和equals()方法;

3.2.1 实现类 HashSet

1.介绍:作为Set主要实现类;线程不安全;可以存储null

3.2.2 实现类 LinkedHashSet

1.介绍:作为HashSet的子类;遍历其内部数据时,可以按照添加的顺序遍历;遍历效率高于HashSet;

2.底层结构:
在这里插入图片描述

3.2.3 实现类 TreeSet

在这里插入图片描述

1.介绍:可以按照添加对象的指定属性,进行排序。
   1.1添加的对象只能是同一类的对象。
   1.2两种排序方法:自然排序(实现Comparable接口)、定制排序(Comparator)
      自然排序:比较两个对象是否相同的标准为CompareTo()返回0.不再是equals()。
      定制排序:比较两个对象是否相同的标准为Compare()返回0.不再是equals()。

4. Collection 集合的遍历

4.1 迭代器方法


/*
iterator 开始指向第一个元素的前一个位置
iterator的方法:
hasNext() 判断是否有下一个元素
next() 1.指针下移,2.将下移后位置上的元素返回
remove() 可以在遍历的时候,删除集合中的元素
*/

//1.创建集合
Collection coll = new ArrayList();
//1.1添加元素。。。
//2.获取此集合的迭代器
Iterator it = coll.iterator();
//3.遍历集合
where(it.hasNext){
system.out.print(it.next);
}

4.2 增强 for 循环


//1.创建集合
Collection coll = new ArrayList();
//2.添加元素
...
//3.foreach遍历
for(Object obj : coll){
System.out.print(obj);
}
//数组也适用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值