当前位置: 首页 > news >正文

忘记网站后台账号深圳龙岗区住房和建设局网站

忘记网站后台账号,深圳龙岗区住房和建设局网站,小白学做网站买什么书,精品网络小说Set接口什么是Set#xff0c;就是不包含重复元素的集合。Set是一种不包括重复元素的Collection。它维持它自己的内部排序#xff0c;所以随机访问没有任何意义。与List一样#xff0c;它同样允许null的存在但是仅有一个。由于Set接口的特殊性#xff0c;所有传入Set集合中的…Set接口什么是Set就是不包含重复元素的集合。Set是一种不包括重复元素的Collection。它维持它自己的内部排序所以随机访问没有任何意义。与List一样它同样允许null的存在但是仅有一个。由于Set接口的特殊性所有传入Set集合中的元素都必须不同同时要注意任何可变对象如果在对集合中元素进行操作时导致e1.equals(e2)true则必定会产生某些问题。Set接口有三个具体实现类分别是散列集HashSet、链式散列集LinkedHashSet和树形集TreeSet。Set是一种不包含重复的元素的Collection无序即任意的两个元素e1和e2都有e1.equals(e2)falseSet最多有一个null元素。需要注意的是:虽然Set中元素没有顺序但是元素在set中的位置是由该元素的HashCode决定的其具体位置其实是固定的。此外需要说明一点在set接口中的不重复是有特殊要求的。     举一个例子:对象A和对象B本来是不同的两个对象正常情况下它们是能够放入到Set里面的但是如果对象A和B的都重写了hashcode和equals方法并且重写后的hashcode和equals方法是相同的话。那么A和B是不能同时放入到Set集合中去的也就是Set集合中的去重和hashcode与equals方法直接相关。 为了更好地理解请看下面的例子 public class Test{ public static void main(String[] args) { SetString setnew HashSetString(); set.add(Hello); set.add(world); set.add(Hello); System.out.println(集合的尺寸为:set.size()); System.out.println(集合中的元素为:set.toString()); } } 运行结果 集合的尺寸为:2集合中的元素为:[world, Hello] 分析由于String类中重写了hashcode和equals方法用来比较指向的字符串对象所存储的字符串是否相等。所以这里的第二个Hello是加不进去的。 再看一个例子 public class TestSet {public static void main(String[] args){SetString books new HashSetString();//添加一个字符串对象books.add(new String(Struts2权威指南));//再次添加一个字符串对象//因为两个字符串对象通过equals方法比较相等所以添加失败返回falseboolean result books.add(new String(Struts2权威指南));System.out.println(result);//下面输出看到集合只有一个元素System.out.println(books); } }运行结果 false[Struts2权威指南] 说明程序中book集合两次添加的字符串对象明显不是一个对象程序通过new关键字来创建字符串对象当使用运算符判断返回false使用equals方法比较返回true所以不能添加到Set集合中最后只能输出一个元素。以下基于JDK1.9对Set的描述 public interface SetE extends CollectionEA collection that contains no duplicate elements. More formally, sets contain no pair of elements e1 and e2 such that e1.equals(e2), and at most one null element. As implied by its name, this interface models the mathematical set abstraction. 一个不包含重复元素的集合。更正式地说集合中不包含e1和e2元素比如e1.equalse2最多只包含一个空元素。正如它的名字所暗示的这个接口模拟了数学集合的抽象。 The Set interface places additional stipulations, beyond those inherited from the Collection interface, on the contracts of all constructors and on the contracts of the add, equals and hashCode methods. Declarations for other inherited methods are also included here for convenience. (The specifications accompanying these declarations have been tailored to the Set interface, but they do not contain any additional stipulations.) Set接口附加了额外的规定超出了从集合接口继承的、所有构造函数的契约以及add、equals和hashCode方法的契约。为了方便起见这里还包括了其他继承方法的声明。伴随这些声明的规范已经针对Set接口进行了调整但是它们不包含任何额外的规定。 The additional stipulation on constructors is, not surprisingly, that all constructors must create a set that contains no duplicate elements (as defined above).对于构造函数的附加规定并不奇怪所有的构造函数都必须创建一个不包含重复元素的集合如上所述。Note: Great care must be exercised if mutable objects are used as set elements. The behavior of a set is not specified if the value of an object is changed in a manner that affects equals comparisons while the object is an element in the set. A special case of this prohibition is that it is not permissible for a set to contain itself as an element. 注意如果可变对象被用作设置元素那么必须执行非常小心的操作。一组的行为没有指定如果一个对象的值改变的方式影响比较对象是一组元素。这个禁止的一种特殊情况是不允许包含一组本身为一个元素。 Some set implementations have restrictions on the elements that they may contain. For example, some implementations prohibit null elements, and some have restrictions on the types of their elements. Attempting to add an ineligible element throws an unchecked exception, typically NullPointerException or ClassCastException. Attempting to query the presence of an ineligible element may throw an exception, or it may simply return false; some implementations will exhibit the former behavior and some will exhibit the latter. More generally, attempting an operation on an ineligible element whose completion would not result in the insertion of an ineligible element into the set may throw an exception or it may succeed, at the option of the implementation. Such exceptions are marked as optional in the specification for this interface. 一些set实现对它们可能包含的元素有限制。例如有些实现禁止零元素有些实现对其元素的类型有限制。试图添加一个不合格的元素会抛出一个未经检查的异常通常是NullPointerException或ClassCastException。试图查询不合格元素的存在可能会抛出异常或者它可能只是返回false;一些实现将展示前者的行为而有些实现将展示后者。更一般的情况是尝试在不合格的元素上进行操作其完成不会导致将不合格的元素插入到集合中这可能会抛出异常或者在实现的选项中可能成功。在该接口的规范中这些异常被标记为“可选”。 1HashSetHashSet 是一个没有重复元素的集合。它是由HashMap实现的不保证元素的顺序(这里所说的没有顺序是指元素插入的顺序与输出的顺序不一致)而且HashSet允许使用null 元素。HashSet是非同步的如果多个线程同时访问一个哈希set而其中至少一个线程修改了该set那么它必须保持外部同步。 HashSet按Hash算法来存储集合的元素因此具有很好的存取和查找性能。 HashSet的实现方式大致如下通过一个HashMap存储元素元素是存放在HashMap的Key中而Value统一使用一个Object对象。 HashSet使用和理解中容易出现的误区: a.HashSet中存放null值  HashSet中是允许存入null值的但是在HashSet中仅仅能够存入一个null值。 b.HashSet中存储元素的位置是固定的  HashSet中存储的元素的是无序的这个没什么好说的但是由于HashSet底层是基于Hash算法实现的使用了hashcode所以HashSet中相应的元素的位置是固定的。  c.必须小心操作可变对象Mutable Object。如果一个Set中的可变元素改变了自身状态导致Object.equals(Object)true将导致一些问题。 2LinkedHashSetLinkedHashSet继承自HashSet其底层是基于LinkedHashMap来实现的有序非同步。LinkedHashSet集合同样是根据元素的hashCode值来决定元素的存储位置但是它同时使用链表维护元素的次序。这样使得元素看起来像是以插入顺序保存的也就是说当遍历该集合时候LinkedHashSet将会以元素的添加顺序访问集合的元素。 3TreeSetTreeSet是一个有序集合其底层是基于TreeMap实现的非线程安全。TreeSet可以确保集合元素处于排序状态。TreeSet支持两种排序方式自然排序和定制排序其中自然排序为默认的排序方式。当我们构造TreeSet时若使用不带参数的构造函数则TreeSet的使用自然比较器若用户需要使用自定义的比较器则需要使用带比较器的参数。 注意TreeSet集合不是通过hashcode和equals函数来比较元素的.它是通过compare或者comparaeTo函数来判断元素是否相等.compare函数通过判断两个对象的id相同的id判断为重复元素不会被加入到集合中。
http://wiki.neutronadmin.com/news/166448/

相关文章:

  • 郑州网站建设修改做网站运营很累吧
  • 做网站分流三个字最吉利最旺财的公司名
  • 中国建设银行网站-个人客户嘉兴网站制作建设
  • chatgpt网站石家庄网站建设报价
  • 济南中建设计院有限公司网站娱乐视频直播网站建设
  • 怎么做自助购物网站网站推广的岗位要求
  • 自己搭建网站需要多少钱网站模版二次开发跟手工制作区别
  • 注册网站要百度实名认证安不安全网站的倒计时怎么做的
  • 娱乐平台网站建设cn域名建设网站需要备案吗
  • 公司网站内容更新该怎么做做网站需要云数据库吗
  • 送给做网站的锦旗语免费推广的网站
  • 建设一个招聘网站大概多少费用邢台优化网站排名
  • 阿里买域名 电脑做网站德州公司做网站
  • 免费照片的网站模板免费下载远洋国际一期官方网站建设
  • 创业做网站开发推广网站哪家做的好
  • 中国建设银行网站不好用烟台工程建设信息网站
  • 杭州高瑞网站建设网站建设需要配置环境么
  • 做网站用个人还是企业比较好深圳优化公司排名
  • 网站制作公司起名wordpress4.9.8安装
  • 网站建设工作落实情况wordpress重置
  • 厦门高端网站建设公司应用商店app下载安卓版
  • 单页网站 产品放哪自己做的网站如何引流
  • 想做网站策划怎么做门户网站建设与推广方案
  • 如何看别人网站用什么做的wordpress 5.0网易云音乐
  • linux wordpress 建站教程wordpress网站分享到朋友圈
  • 营销导向网站建设流程微信网站开发企业
  • 上海企业网站改版信誉比较好的商家可做网站
  • 网站建设 试题中铁建设团门户网登录入口
  • 建设企业网站公司在哪里搜索引擎链接
  • 门户网站建设技术方案广西建设信息网官网