java基础:数据结构和Set集合(1)

本文深入探讨了数据结构与算法的基础概念,详细讲解了数据结构的两大存储方式:顺序存储和链式存储的特点及适用场景,以及数据的四种逻辑结构:集合、线性、树和图结构,并介绍了Java集合框架中的Set集合及其操作方法。
程序是由数据结构和算法组成的。数据结构又可以讨论数据和数据之间的关系,由此数据结构可以从两方面讨论:一:是存储方式    二:数据的逻辑结构。
存储方式有两种:
1.顺序存储:
	好处:查找某个数据时,比较方便,顺序存储由于不存储指针,所以节省空间
	缺点:删除/插入效率低,由于需要使用下标来标识数据,所以数据量受最大下标值的约束
2.链式存储
	好处:删除/插入效率高,由于不需要下标标识数据,所以,理论上可以存储无限量数据
	缺点:查找某个数据时繁琐,除了存储数据本身意外,还要存储下一个元素的位置(指针)(由于存储指针,所以相对比较占用空间)
数据的逻辑结构有集合结构(没有关系),线性结构(一前一后),树结构(一上多下),图结构(多对多)。
集合是一个容器,用来存储数据。集合的最基本的集合接口是Collection,所有实现Collection接口的类都必须提供两个标准的构造函数:无参数的构造函数用于创建一个空的Collection,有一个Collection参数的构造函数用于创建一个新的Collection,这个新的Collection与传入的Collection有相同的元素。后一个构造函数允许用户复制一个Collection。
Collection接口的有序集合有List集合(线性结构)和Queue集合,无序集合有Set集合(集合结构)
Set集合的实现类有:HashSet,LinkedHashSet,TreeSet
Set中的元素是无序且不可重复
//创建一个容器
Set set=new HashSet();
//往集合里面添加元素
set.add(123);
set.add("abc");
set.add(false);
//打印
System.out.println("结果:"+set);
//结果:abc,123,false

因为Set是无序结构,我们不能通过下标获取某个元素,因为不是加入时的先后顺序。虽然,Set不能获取指定元素,但是我们可以知道集合中有多少元素.

//创建一个容器
Set set=new HashSet();
//往集合里面添加元素
set.add(123);
set.add("abc");
set.add(false);
//获取集合中元素个数
int size=set.size();
//结果:3
//判断是否包含某个元素
boolean contains=set.contains("abc");
//结果:true

注意:存到集合中的东西,不能是基本数据类型(集合中不能存贮基本数据类型),将基本数据类型存储在集合中,一定会进行自动装箱。
Set如果要遍历,要通过迭代器遍历

//创建一个容器
Set set=new HashSet();
//往集合里面添加元素
set.add(123);
set.add("abc");
set.add(false);
//Set的第一种遍历方法
for(Object obj:set){
	Sysytem.out.println(obj);
}
//Set的第二种遍历方法,通过迭代器来遍历
Iterator it =set.iterator();
while(it.hasNext()){
	Object obj=it.next();
	System.out.println(obj):
}

通常情况下,Set里的数据都是分类放(指定泛型)。

//指定泛型
Set<Person> set=new HashSet<>();
set.add(new Person());
for(Person per:set){
	System.out.println(per);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值