java 集合set,java中set集合怎么取值

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: