java——集合-set

Set接口

Set继承自Collection接口,set接口中的元素无序,不重复主要有两个实现类HashSet和TreeSet

HashSet集合

Set与List集合的存取方式一样
当向HashSet集合中添加一个对象时首先会调用对象的hashCode()方法来确定元素的存储位置,
然后在调用对象的equals()方法来确保该位置没有重复元素

TreeSet集合

内部采用自平衡的排序二叉树来存储元素
二叉树存储结构首元素放在第一然后进行对比小的放左边大的放右边
如果TreeSet存放对象类型的,必须使对象类型实现Comparable接口才能实现比较

Comparable和Comparator

Comparable
1、表示可以比较的(用于类实现)。
2、实现这个接口表示:这个类的实例可以比较大小,可以进行自然排序。
3、compareTo() 返回正数表示大,返回负数表示小,返回0表示相等。
4、Comparable的实现必须不equals()的结果一致,就是相等的对象时候,比较结果一定是0!
Comparator
1、比较工具。
2、用于临时定义比较规则,不是默认比较规则。

        案例:Comparator
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class CompareDemo {
public static void main(String[] args) {
演示 String 重写的compareTo()方法
int a = "Tom".compareTo("Jerry");
System.out.println(a);
a = "Tom".compareTo("Tom");
System.out.println(a);
a = "Jerry".compareTo("Tom");
System.out.println(a);
List<String> names = new ArrayList<String>();
names.add("Tom");
names.add("Jerry");
names.add("Black");
names.add("Andy");
names.add("Lee");
ByLength byLength = new ByLength();
演示 按照自定义比较规则排序
Collections.sort(names, byLength);
System.out.println(names);
}
}
class ByLength implements Comparator<String> {
@Override
public int compare(String o1, String o2) {
return -(o1.length() - o2.length()); // 按照长度对比
}
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1.Set 上一篇,我们介绍Java中的List集合。本篇,让我们继续学习,来了解下Set集合; Set继承于Co...
    贾博岩阅读 84,083评论 4赞 52
  • 10.1 Set集合 Set接口继承Collection接口,没有提供额外的方法。Set集合不允许包含相同...
    王毅巽阅读 408评论 0赞 0
  • Java集合类可用于存储数量不等的对象,并可以实现常用的数据结构如栈,队列等,Java集合还可以用于保存具有映射关...
    小徐andorid阅读 2,134评论 0赞 13
  • 一、集合入门总结 集合框架: Java中的集合框架大类可分为Collection和Map;两者的区别: 1、Col...
    程序员欧阳阅读 11,852评论 2赞 61
  • 迷迷糊糊睡到中午。和A酱聊了会儿天后心情好了一点【 吃完饭后摸了会儿FF14,感觉没啥可干的,就打开3ds打火纹第...
    真昼之月阅读 234评论 0赞 0

友情链接更多精彩内容