LinkedList,set,TreeSet集合,HashSet集合

List集合的概述和特点【记忆】
List集合的概述
有序集合,这里的有序指的是存取顺序
用户可以精确控制列表中每个元素的插入位置,用户可以通过整数索引访问元素,并搜索列表中的元素与Set集合不同,列表通常允许重复的元素
        List集合的特点
                存取有序
                可以重复
                有索引


 1LinkedList : 底层是一个双向链表,而不是连续存储
 * 


 * 只是能够找到下一个元素的地址而已,所以在进行添加和删除操作效率较高
 * 但是查询效率较低 因为只能从第一个挨个找
 * 

 2 Set集合

2.1 Set集合概述和特点【应用】

不可以存储重复元素 没有索引,由于没有get方法,因此不能使用普通for循环遍历 遍历的方式: 迭代器 增强for循环 Set自带的forEach方法

存储字符串并遍历

 3  TreeSet集合

3.1 TreeSet集合概述和特点【应用】

不可以存储重复元素 没有索引 可以将元素按照规则进行排序

TreeSet():根据其元素的自然排序进行排序

TreeSet(Comparator comparator) :根据指定的比较器进行排序

存储Integer类型的整数并遍历

 向TreeSet集合当中存储数据的时候必须给被存储的对象设置排序规则,此时TreeSet对象会自动调用Comparable接口的compareTo方 法。该方法返回一个数字: 如果返回为负数,表示当前要存入的值是一个较小的值,则将其存入被比较的元素的左边 如果返回为整数,表示当前要存入的值是一个较大的值,则将其存入被比较的元素的右边 如果返回零则表示当前要存入的值与集合当中已经存在的值相同,则不存

3.2 比较器排序Comparator的使用

用TreeSet集合存储自定义对象,带参构造方法使用的是比较器排序对元素进行排序的 比较器排序,就是让集合构造方法接收Comparator的实现类对象,重写compare(T o1,T o2)方法 重写方法时,一定要注意排序规则必须按照要求的主要条件和次要条件来写

3.3 两种比较方式总结

两种比较方式小结

自然排序: 自定义类实现Comparable接口,重写compareTo方法,根据返回值进行排序

比较器排序: 创建TreeSet对象的时候传递Comparator的实现类对象,重写compare方 法,根据返回值进行排序

在使用的时候,默认使用自然排序,当自然排序不满足现在的需求时,必须使用比较器排序

两种方式中关于返回值的规则 如果返回值为负数,表示当前存入的元素是较小值,存左边 如果返回值为0,表示当前存入的元素跟集合中元素重复了,不存 如果返回值为正数,表示当前存入的元素是较大值,存右边

4 HashSet集合

4.1 HashSet集合概述和特点

底层数据结构是哈希表

存取无序

不可以存储重复元素

没有索引,不能使用普通for循环遍历

存储字符串并遍历

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
掌握集合的概念、体系结构、分类及使用场景 2)了解Set接口及主要实现类(HashSetTreeSet) 3)了解List接口及主要实现类(ArrayListLinkedList、Vector) 4)了解Map接口及主要实现类(HashMap、TreeMap、HashTable) 二、实验内容及步骤 1、编写程序练习将以下5个Person类的对象放在一个HashSet中。 姓名:张三 身份证号:178880001 姓名:王五 身份证号:178880002 姓名:李四 身份证号:178880003 姓名:王五 身份证号:178880002 姓名:李四 身份证号:178880004 注意:因为Person类是自定义类,需要重写hashCode()方法和equals()方法,并规定只有姓名和身份证号都相等,则对象相等。 其中计算哈希码的算法:(31 + ((name == null) ? 0 : name.hashCode()))*31 + id (注:name:Person对象的姓名,id:Person对象的身份证号) 主方法中作如下测试: 1)创建一个可放置Person类对象的HashSet; 2)依次添加上述5个对象到HashSet中; 3)把集合中的元素打印出来(使用迭代器Iterator) 2、编写程序练习List集合的基本使用: 1) 创建一个只能容纳String对象名为names的ArrayList集合; 2)按顺序往集合中添加5个字符串对象:"张三"、"李四"、"王五"、"马六"、"赵七"; 3)对集合进行遍历,分别打印集合中的每个元素的位置与内容; 4)打印集合的大小,然后删除集合中的第3个元素,并显示删除元素的内容,然后再打印目前集合中第3个元素的内容,并再次打印集合的大小。 3、编写程序练习Map集合的基本使用: 1)创建一个只能容纳String对象的person的HashMap集合; 2)往集合中添加5个"键-值"对象: "id"-"1"; "name"-"张三"; "sex"-"男"; "age"-"25"; "hobby"-"爱学Java" 3)对集合进行遍历,分别打印集合中的每个元素的键与值; 4)打印集合的大小,然后删除集合中的键为age的元素,并显示删除元素的内容,并再次打印集合的大小。 四、思考题 1、集合中的ListSet、Map有哪些不同? 2、为什么使用集合框架,而尽可能少用数组作为存储结构? 3、如何使用TreeSet实现第一题?

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值