程序是由数据结构和算法组成的。数据结构又可以讨论数据和数据之间的关系,由此数据结构可以从两方面讨论:一:是存储方式 二:数据的逻辑结构。
存储方式有两种:
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);
}
本文深入探讨了数据结构与算法的基础概念,详细讲解了数据结构的两大存储方式:顺序存储和链式存储的特点及适用场景,以及数据的四种逻辑结构:集合、线性、树和图结构,并介绍了Java集合框架中的Set集合及其操作方法。

1682

被折叠的 条评论
为什么被折叠?



