java基础---集合类(大致总结)

java基础—集合类

在这里插入图片描述java集合框架包含两种类型的容器,一种是集合collection,另一种是图map。集合collection有三种子类型set,list,Queue。

set

set是一种无序且不包含重复元素的collection,set最多只有一个null

HashSet

HashSet是由哈希表实现,数据是无序的,只能放入一个null,其底层是hashMap,只使用了HashMap的key来存放数据。HashSet要求放入的对象必须实现hashcode方法,放入的对象是以hashcode码作为标识的,相同内容的String对象,hashcode相同,所以放入的内容不能相同,但同一个类的对象可以放入不同的实例。
HashSet中保证元素唯一的hashcode和equals方法进行判断。如果hashcode不同,则不用判断equals直接存在hashset中,如果hashcode相同,则需要用equals判断,相同则不存,不相同则存储。

TreeSet

TreeSet底层是自平衡的排序二叉树,可以保证快速检索指定节点。保证数据唯一性的方法是根据比较方法返回的结果是否为0,为0则相同,不加入TreeSet,不为0则为不同元素,进行存储,所以要求加入TreeSet的对象类要实现Comparable接口,否则会抛出异常。
TreeSet对元素的排序方式:
1)自然排序:元素本身具有排序功能,实现Comparable接口,重写compareTo方法
2)比较器排序:元素不具备排序功能,实现Comparator接口,覆盖compare方法
compareTo和compare方法
compareTo是java.lang.Comparable< T >接口中的方法,当需要对某个类的对象进行排序时,该类需要实现Comparable< T >接口,重写compareTo方法。
它强行将实现它的每一个接口进行整体排序------称为自然排序,实现此接口的对象列表和数组可以用Collections.sort和Arrays.sort进行自动排序。
只要实现了这个接口,其对象就拥有了排序能力,是一种内部排序方式,通过实现它唯一的方法compareTo。
compare是java.util.Comparator< T > 接口中的方法,实际上用的是待比较对象的compareTo方法,主要是针对一些没有比较能力的对象,为他们实现比较的功能,所以叫做比较器,是一种外部的东西,通过它定义比较的方式,再传到Collections.sort()和Arrays.sort()中对目标排序,而且通过自身的compare方法定义比较的内容和结果的升降序

      List<String> list = Arrays.asList("hello", "world", "welcome", "nihao");

        //按照字母排序
        Collections.sort(list);
        System.out.println(list);

        //按照字符串的长度.
        Collections.sort(list, (item1, item2) -> item1.length() - item2.length());
        System.out.println(list);

        //按照字符串的长度降序排序.
        Collections.sort(list, (item1, item2) -> item2.length() - item1.length());

list

list是有序的collection,能够精确控制每个元素插入的位置,用户能够使用索引(元素在list中的位置,类似数组中的下标)来访问list中的元素,类似于java的数组。
list允许有相同的元素,常用的实现类:Arraylist,linkedlist,Stack和vector

list的3种遍历方式
for(int i=0;i<
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值