集合
集合概述
数组其实就是一个数组,集合实际上就是一个容器,可以用容纳其他类型的数据
集合是一个容器,是个载体,可以一次容纳多个对象
在实际开发过程中,假设链接数据库,数据库当中有10条记录,那么假设把这10条记录查询出来,在Java程序中会将10条数据封装成10个Java对象,然后将10个Java对象放到某一个集合当中,将集合传到前端,然后遍历集合,将一个数据一个数据展现出来
集合不能直接存储基本数据类型,另外集合也不能直接存储Java对象,集合当中存储的都是Java对象的内存地址(或者说集合中存储的是引用。)
list.add(100);//自动装箱Integer
注意:
集合在Java中本身是一个容器,是一个对象。
集合在任何时候存储的都是“引用。”****
在Java中,每一个不同的集合,底层都会对应不同的数据结构。往不同的集合中存储元素,等于将数据放到不同的数据结构当中。
数据结构:数据存储的结构就是数据结构。不同的数据结构,数据存储方式不同。例如:
数组、二叉树、链表、哈希表都是最常见的数据结构
java中已经将数据结构实现好了,已经写好了这些常用的集合类。只需要知道什么时候使用哪种数据结构。
new ArrayList(); 创建一个集合,底层是数组
new LinkedList(); 创建一个集合对象,底层是链表
new TreeSet(); 创建一个集合对象,底层是二叉树
集合继承结构图
最好对集合继承结构图熟悉,多看
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MnMAbSfN-1614526270119)(C:\Users\Administrator\Pictures\集合继承结构图.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kblh3RCj-1614526270122)(C:\Users\Administrator\Pictures\集合继承结构图2.png)]
结构图来源:https://blog.csdn.net/weixin_48586922/article/details/109675559
所有集合类都在java.util包下
java中集合分为两大类:
一类是单个方式存储元素:
单个方式存储元素,这一类的集合中超级父接口:java,util.Collection
Collection又继承于Iterable(可迭代的,可遍历的,所有集合元素都是可迭代,可遍历的)
Collection继承于Iterable,Iterable内有个方法iterator(),返回一个迭代器对象
集合迭代器对象:
Iterable it = Collection对象.iterator
迭代器用于取出集合对象,也就是遍历
迭代器通过hasNext(),next(),remove()获取或删除数据
接口无法实例化对象
Collection常用方法:
add():往集合中添加元素,存储的是内存地址
size():获取集合中元素的个数
contains():判断集合中是否含有指定元素,包含true,不包含false
Collection c = new ArrayList();
String s1 = new String("abc");
c.add(s1);
String s2 = new String("def");
c.add(s2);
String s3 = new String("abc");
//集合中是否包含s3
System.out.println(c.contains(x));//返回true还是flase
//contains源码中可以看见底层重写了equals方法,因此两者比较的是内容返回true,也表示包含这个元素
当你集合中存放的是对象时如果对象方法没有重写equals方法那么,类似于上面那种情况,返回false
public static void main(String[] args){
Collection c = new ArrayList();
User user1 = new User("abc");
c.add(user1);
User user2 = new User("abc");
System.out.println(c.contains(user2));//返回false
}
class User{
private String str;
public User(){
}
public void User(String str){
this.str = str;
}
}
isEmpty():判断集合中是否存在元素,返回true和flase
toArray():将集合转为Object数组
remove():删除集合中的元素
Collection通用迭代方式,Map集合中不能使用,只适用于Collection以及子类使用
Iterator it = new Iterator();//获取迭代器对象
Iterator方法用于遍历集合中元素
当集合结构发生改变时,迭代器必须重新获取,否则会发生异常
迭代器方法:
hasNext():如果有下一个元素返回true,没有返回false
next():输出元素
//Collection c = new ArrayList();父类实例化子类方法多态
//以ArrayList为例
ArrayList arraylist = new ArrayList();//创建一个ArrayList集合对象
arraylist.add("你好");//add是Arrayist一个方法,用来往集合中添加元素,不像数组只允许固定存放某一种格式,可以多种格式混合
arraylist.add(11);
arraylist.add(133.4);
arraylist.remove(1);