JAVA:集合

集合

一、

1、什么是集合?有什么用?

集合是一个容器,一个载体,可以一次容纳多个对象。集合本身也是一个对象

(集合中不能之内存储基本数据类型,也不能存java对象,只能存地址!!)

2、集合中不能直接存储基本数据类型,也不能直接存储java对象。集合当中存储的是java对象的内存地址(引用)

3、在java中每一个不同的集合,底层会对应不同的数据结构。往不同的集合中存储元素。等于将数据放到了不同的数据结构当中

Eg: new  ArrayList(); // 创建一个集合,底层是数组

       new LinkedList(); // 创建一个集合对象,底层是链表

     new TreeSet(); //创建一个集合对象,底层是二叉树

 4、所有的集合类和集合接口都在java.util包下。为了更好地掌握集合,最好把集合的继承结构图背会。

5、java中的集合分为两大类:

一类是以单个方式存储元素:

单个方式存储元素,这一类集合中超级父接口:java.util.Collection;

一类是以键值对的方式存储元素:

以键值对的方式存储元素,这一类集合中超级父接口:java.util.Map;

6、遍历就是迭代,迭代就是遍历

二、List接口和Set接口

1、List集合存储元素的特点:有序(存进去是这个顺序,取出来还是这个顺序)可重复(比如可以存很多个1),存储的元素有下标。下标从0开始,依次递增。

①:ArrayList集合底层采用了数组这种数据结构

②:LinkedList集合底层采用了双向链表数据结构

③:Vector集合底层采用了数组这种数据结构

以上三个和List接口是“实现”关系。且都为实现类。

2、Set集合存储元素特点:无序(存进去是这个顺序,取出来就不一定是这个顺序了),且Set中的元素不可重复

①:HashSet集合:实际上HashSet集合在new的时候,底层实际上new了一个HashMap集合;向HashSet集合中存储元素,实际上是存到HashMap中了。HashMap集合是一个哈希表数据结构

②TreeSet集合:TreeSet集合底层实际上是TreeMap,new TreeSet集合的时候,底层实际上new了一个TreeMap集合;往TreeSet集合中存数据的时候,实际上是存到TreeMap集合当中了。TreeSet集合底层采用了二叉树数据结构

以上两个都是实现类

3、SortedSet接口

特点:无序不可重复,但是放在SortedSet集合中的元素可以自动排序,且按照从小到大的顺序排的。

三、Map接口

1、Map集合和Collection集合没有关系

2、Map集合以Key和value的这种键值对方式存储元素

3、key和value都是存储java对象的内存地址

4、所有Map集合的Key特点:无序不可重复

Map集合的Key和Set集合存储元素特点相同 (Map集合的key部分就是set集合)

①HashMap集合底层是哈希表数据结构

②SortedMap接口集合的key存储元素的特点:首先是无序不可重复的;另外放在SortedMap集合Key部分的元素会自动按照大小顺序排序,称为可排序的集合;TreeMap集合底层的数据结构是一个二叉树

四、collection中常用的方法

1、add(Object e)

向集合中添加元素

Collection c = new ArrayList(); // 多态

 c.add(100); // 加的是对象的内存地址

 c.add("haha");

 c.add(true); // 可以添加boolean类型的

 c.add(new Object); // 也可以这样

2、size()

获取集合中元素的个数

 sout("集合中元素的个数是" + c.size());  // 输出4

3、contains();

判断集合中是否包含某元素

 boolean flag = c.contains("绿巨人");

 sout(flag); // 输出false;

4、 remove()

删除集合中某个元素

 c.remove(100); // 移除了100

5、clear()

清空集合

 c.clear() // 清空了整个集合

6、toArray()

将集合转换为Object类型的数组(也就是什么都可以往里放)

Object[] obj = c.toArray();

五、关于集合遍历/迭代专题(迭代就是遍历)

以下讲解的遍历/迭代方式是所有Collection通用的一种方式。

Collection c = new ArrayList();

C.add("abc");

C.add("esd");

C.add(123);

C.add(new Object());

Iterator it = c.iterator();  // 获取集合对象的迭代器Iterator

While(it.hasNext()){  // 遍历并输出集合元素

Object obj = it.next();

Sout(obj);  // 依次输出集合元素

}

↑迭代器原理

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值