java 集合set,java中set集合怎么取值
本文给大家带来了一些关于java的知识,主要介绍了一些关于set sets的相关问题。集合集合的特点是无序、不重复、无索引。下面我们就来看看,希望能帮到你。
如何解决写爬虫IP受阻的问题?立即使用。
Set系类集合特点:
乱序:访问顺序不一致,不重复:重复可以去掉,没有索引:没有带索引的方法,所以不能用普通的进行循环遍历,不能通过索引得到元素Set集合实现类特点:。
HashSet:无序、非重复、非索引。
LinkedHashSet:有序、不重复、无索引。
树集:已排序,不重复,无索引
集合的功能和集合的API基本一致。
HashSet集合
哈希集集合:
SetString set=new HashSet();
Set.add(石原聪美);
Set.add(石原聪美);
Set.add(工藤静香);
Set.add(朱茵);
system . out . println(set);
Set.remove(朱茵);
system . out . println(set);输出结果:
通过上面的代码和运行结果,我们可以清楚的看到HashSet集合是乱序的,没有重复;
结合上图可以看出,HashSet集合无法通过get()方法的索引来获取数据,在删除集合中的数据时,只能通过定向来删除数据。
LinkedHashSet集合:
LinkedHashSet集合:
SetString set=new linked hashset();
Set.add(石原聪美);
Set.add(石原聪美);
Set.add(工藤静香);
Set.add(朱茵);
system . out . println(set);
Set.remove(朱茵);
system . out . println(set);输出结果:
通过比较上面的代码和输出结果,我们可以看出无序和有序的区别。前者会打乱传入数据的顺序,后者仍然会按照输入数据的顺序存储数据,所以输出是有序的。
TreeSet集合:
树集集合:
set integer set=new TreeSet();
set . add(13);
set . add(23);
set . add(23);
set . add(11);
system . out . println(set);
set . remove(23);
system . out . println(set);输出结果:
通过上面的代码和输出结果,我们可以从字面上理解为什么TreeSet的特点是排序,即按照Java默认的排序方式对存储的数据进行排序。
但此时如果存储了People等自定义对象,TreeSet就不能直接排序,会报错!
//人员类别:
公共阶层的人{
私有字符串名称;
私人年龄;
私人弦乐教室;
公众人物(){
}
公共人物(字符串名称、年龄、字符串教室){
this.name=name
this.age=年龄;
this.classroom=教室;
}
公共字符串getName() {
返回名称;
}
public void setName(字符串名){
this.name=name
}
public int getAge() {
回归年龄;
}
公共无效存储(整数){
this.age=年龄;
}
公共字符串getClassroom() {
回归课堂;
}
public void set classroom(String classroom){
this.classroom=教室;
}
@覆盖
公共字符串toString() {
返回“人{”
name= name \
,年龄=年龄
,classroom= classroom \
};
}
}
//主方法:
公共静态void main(String[] args) {
set people p=new TreeSet();
P.add(新人(张三,19,智);
P.add(新人(李四,18,数据库);
P.add(新人(王五,20,渗透);
system . out . println(p);
}为了解决这个问题,我们需要为TreeSet集合定制存储类型。解决这个问题有两种方法:一种是自定义类实现Comparable接口,重写其中compareTo方法指定的规则;另一种是为规则定义设置自己的比较器对象。
方法一:自定义类实现compare接口,重写中的compareTo方法指定比较规则(冗余和无关紧要的代码此处不再赘述,只显示重要的)。
//第一个要改变的地方:实现Comparable类
公共阶级人民实行相当的人民{
//第二个改变的地方:在Comparable类中重写compareTo方法
@覆盖
公共国际比较(人o) {
返回this . age-o . age;
}
}输出结果(按年龄对比):
在重写的方法中,return后的代码决定了对象将根据什么标准进行比较。比较规则如下:
如果认为第一个元素大于第二个元素,可以返回正整数;如果认为第一个元素小于第二个元素,可以返回负整数;如果认为第一个元素等于第二个元素,可以返回0;此时,Treeset集合中将只保留一个元素,您认为这两个元素是重复的。方法2:集合有自己的比较器对象用于规则定义。
set people p=new TreeSet(new comparator people(){
@覆盖
公共int比较(人员o1,人员o2) {
返回O1 . getage()-O2 . getage();
}
});在原有的基础上,改变了集合的创建,其比较准则类似于前面的定义方法。与之前的方法相比,这种方法会更加方便快捷。在这里,我们还可以复习一些之前学过的知识“Lambda expression”来简化代码块。
SetPeople p=new TreeSet((o1,O2)-O1 . getage()-O2 . getage());如果你没有学习过lambda表达式,或者对Lambda表达式的知识不太清楚,那么看看Java中的Lambda表达式是如何理解3354来简化本文的解释可能会对你有所帮助。
推荐:《java视频教程》以上是如何理解Java中set set的详细内容。更多请关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。