HashSet的remove方法(一道面试题)】的更多相关文章

1 public class CollectionTest { 2 3 @Test 4 public void test3(){ 5 HashSet set = new HashSet(); 6 Person p1 = new Person(1001,"AA"); 7 Person p2 = new Person(1002,"BB"); 8 9 set.add(p1); 10 set.add(p2); 11 System.out.println(set); 12 /…
背景:学习java的基础知识,每次回顾,总会有不同的认识.该文系转载 最近去面试了几家公司,被问到hashCode的作用,虽然回答出来了,但是自己还是对hashCode和equals的作用一知半解的,所以决定把它们研究一下. 以前写程序一直没有注意hashCode的作用,一般都是覆盖了equals,却没有覆盖hashCode,现在发现这是埋下了很多潜在的Bug!今天就来说一说hashCode和equals的作用. hashcode提升查找效率 先来试想一个场景,如果你想查找一个集合中是否包含某个…
前一段时间在网上看到这样一道面试题: 有个老的手机短信程序,由于当时的手机CPU,内存都很烂.所以这个短信程序只能记住256条短信,多了就删了. 每个短信有个唯一的ID,在0到255之间.当然用户可能自己删短信. 现在要求设计实现一个功能: 当收到了一个新短信啥,如果手机短信容量还没"用完"(用完即已经存储256条),请分配给它一个可用的ID. 由于手机很破,我要求你的程序尽量快,并少用内存. 1.审题 通读一遍题目,可以大概知道题目并不需要我们实现手机短信内容的存储,也就是不用管短信…
来源: ArrayList和HashSet的Contains()方法 笔试题: package com.champion.test.exam; import java.util.ArrayList; import java.util.HashSet; public class Foo { int value; Foo(int value) { this.value = value; } public boolean equals(Object obj) { if (obj instanceof…
预定义类加载器和双亲委派机制 JVM预定义的三种类型类加载器: 启动(Bootstrap)类加载器:是用本地代码实现的类装入器,它负责将 <Java_Runtime_Home>/lib下面的类库加载到内存中(比如rt.jar).由于引导类加载器涉及到虚拟机本地实现细节,开发者无法直接获取到启动类加载器的引用,所以不允许直接通过引用进行操作. 标准扩展(Extension)类加载器:是由 Sun 的 ExtClassLoader(sun.misc.Launcher$ExtClassLoader)…
ArrayList中有remove 方法和 removeAll方法, ArrayList中不仅继承了接口Collection中的remove方法,而且还扩展了remove方法. Collection中声明的接口为 public boolean remove(Object o) public boolean removeAll(Collection<?> c) ArrayList中含有的方法为public E remove(int index) 实际编程中可能会通过一个Collection来调用…
一.科普定义 这篇博文的两个主角“synchronized”和“读写锁” 1)synchronized 这个同步关键字相信大家都用得比较多,在上一篇“多个线程之间共享数据的方式”中也详细列举他的应用,在这就不多说只做几点归纳: Java提供这个关键字,为防止资源冲突提供的内置支持.当任务执行到被synchronized保护的代码片段的时候,它检查锁是否可用,然后获取锁,执行代码,释放锁. 常用这个关键字可以修饰成员方法和代码块 2)读写锁 我们对数据的操作无非两种:“读”和“写”,试想一个这样的…
一.科普定义(原文:http://903497571.iteye.com/blog/1874752) 这篇博文的两个主角“synchronized”和“读写锁” 1)synchronized 这个同步关键字相信大家都用得比较多,在这就不多说只做几点归纳: Java提供这个关键字,为防止资源冲突提供的内置支持.当任务执行到被synchronized保护的代码片段的时候,它检查锁是否可用,然后获取锁,执行代码,释放锁. 常用这个关键字可以修饰成员方法和代码块 2)读写锁 我们对数据的操作无非两种:“…
Microsoft地址 List<T>的IndexOf()方法 如果T是值类型的,就按照比较值的方法从列表的第一个元素开始逐个匹配,如果T是引用类型,就比较引用是否相同 举例如下: class A {      public int x;      public A(int x)      {           this.x = x;      } }   List<A> listA = new List<A>(); listA.Add( new A(3) ); li…
Java中有关构造函数的一道笔试题解析 1.详细题目例如以下 下列说法正确的有() A. class中的constructor不可省略 B. constructor必须与class同名,但方法不能与class同名 C. constructor在一个对象被new时运行 D.一个class仅仅能定义一个constructor 2.解析说明 (1)class中的构造函数是能够省略的 /** * @Title:User.java * @Package:com.you.user.model * @Desc…
  题目如下: private static void change(StringBuffer str11, StringBuffer str12) { str12 = str11; str11 = new StringBuffer("new world"); str12.append("new world");} public static void main(String[] args) { StringBuffer str1 = new StringBuffe…
这是一道面试题, 请先思考,在看讲解 :) var param = 1; function main() { console.log(param); var param = 2; console.log(this.param); this.param = 3; } //下面两条语句分别会在控制台打印什么? main(); var m = new main(); 讲解如下: 1. main() , 打印的结果为: undefined , 1 a. >  来看第一个打印的值为什么是 undefine…
关于一道面试题,使用C#实现字符串反转算法. 题目见http://student.csdn.net/space.php?do=question&ac=detail&qid=490 详细内容如下: ///<summary> ///使用C#实现字符串反转算法 /// e.g. 输入"12345", 输出"54321" ///请使用你认为的最优算法 ///</summary> ///<param name="s&qu…
前言 最近小农的朋友--小勇在找工作,开年来金三银四,都想跳一跳,找个踏(gao)实(xin)点的工作,这不小勇也去面试了,不得不说,现在面试,各种底层各种原理,层出不穷,小勇就遇上了这么一道面试题,因为没有回答好,面试被PASS,让他备受打击,作为大(lao)哥(si)哥(ji)的我,肯定要安慰一下,到底是什么样的面试题,让小勇又一次夭折在面试的路上,好奇怪为什么要说又?简直让人喜极而泣,哈哈哈,言归正传,我们一起来看一下! 话说小勇正襟危坐在面试官面前,这已经是小勇的第五次面试了,前几次都是…
前言 我比较喜欢安静,大概和我喜欢研究和琢磨技术原因相关吧,刚好到了元旦节,这几天可以好好学习下EF Core,同时在项目当中用到EF Core,借此机会给予比较深入的理解,这里我们只讲解和EF 6.x中不同,相同的则不再叙述. EntityFramework Core 1.1方法理论详解 当我们利用EF Core查询数据库时如果我们不显式关闭变更追踪的话,此时实体是被追踪的,关于变更追踪我们下节再叙.就像我们之前在EF 6.x中讨论的那样,不建议手动关闭变更追踪,对于有些特殊情况下,关闭变更追…
在C#中,如果要删除DataTable中的某一行,大约有以下几种办法: 1,使用DataTable.Rows.Remove(DataRow),或者DataTable.Rows.RemoveAt(index):可以直接删除行 2,datatable.Rows[i].Delete().Delete()之后需要datatable.AccepteChanges()方法确认完全删除,因为Delete()只是将相应列的状态标志为删除,还可以通过datatable.RejectChanges()回滚,使该行取…
一直以为jq的remove()方法是兼容的,今天才发现,原来ie的写法不一样,特作此记录. removeNode方法的功能是删除一个节点,语法为node.removeNode(false)或者node.removeNode(true),返回值是被删除的节点. removeNode(false)表示仅仅删除指定节点,然后这个节点的原孩子节点提升为原双亲节点的孩子节点. removeNode(true)表示删除指定节点及其所有下属节点.被删除的节点成为了孤立节点,不再具有有孩子节点和双亲节点. 重点…
今天看到一道面试题,要写出一个可以创建多级目录的函数: 我的第一个感觉就是用递归创建,具体思路如下: function Directory($dir){ if(is_dir($dir) || @mkdir($dir,0777)){ //查看目录是否已经存在或尝试创建,加一个@抑制符号是因为第一次创建失败,会报一个“父目录不存在”的警告. echo $dir."创建成功<br>"; //输出创建成功的目录 }else{ $dirArr=explode('/',$dir); /…
为何没有删除列表中的全部元素? 解释: 按照执行顺序,第一个空格被删除之后,后面的元素会前移(变成['空格','空格','12','23']),指针下一次会指向新列表的第二个元素(即初始状态的第三个空格),从而初始状态的第二个空格被跳过了,初始第三个空格被删除,接着后面的元素又再次前移(变成['空格','12','23']),指针指向新列表的第三个元素,即初始状态的第5个元素23,然后23被删除了,因此只剩下['空格','12'] 如果想排除初始列表中的部分元素,如何实现? 由上面的情况知道,在…
回来想了想,写出了如下的程序: /** * 一道面试题,按照其描述要求进行快速排序(英文的,希望理解是对的..) * 要求:和一般的快速排序算法不同的是,它不是依次交换pivot和左右元素节点(交换2次),而是交换pivot左边的元素和pivot右边的元素. * * 自己笔写的程序大体上是正确的,但是递归的结束条件没有处理好(我当时写的是返回的i索引值大于0). * 递归的结束条件??? * * 现在看看代码,实际运行了,感觉返回的i索引值大于0这个递归结束条件真的是不对的,因为可能一次排序后根…
如果对正在被迭代的集合进行结构上的改变(即对该集合使用add.remove或clear方法),那么迭代器就不再合法(并且在其后使用该迭代器将会有ConcurrentModificationException异常被抛出). 如果使用迭代器自己的remove方法,那么这个迭代器就仍然是合法的. package chapter1; import java.util.HashMap; import java.util.Iterator; import java.util.Map; /** * Creat…
测试用例--除去末尾特定字符或字符串,Remove方法和TrimEnd方法的比较 结论: 如果是除去末尾特定字符或字符串:TrimEnd方法性能优于Remove方法 具体测试用例如下: Stopwatch watcher = ; List<; i < count; i++) { strList.Add(i.ToString()); } , ).ToString(); Console.WriteLine("StringBuilder.Remove:{0}", watcher.…
本文主要通过用HashSet的add方法讲一下hashCode和equals方法重写.错误的地方望指正. 1.了解HashSet的add方法 了解一个方法的好办法是看源码,所以先看源码 private transient HashMap<E,Object> map; // Dummy value to associate with an Object in the backing Map private static final Object PRESENT = new Object(); p…
<html> <head> <script type="text/javascript" src="jquery-1.9.1.js"></script> </head> <body> <div> <ul> <li id="pp"><a href="#" name="lifan" onclick=…
利用Jquery.validate.js 来做动态验证的时候,需要特定的情况下,删除添加opAmount的必须入力的Check $("#form").validate({ rules : { number:true, max:999999 } } }); 用这个写法: if (condition) { $("#opAmount").rules("remove",{required:true}); } else { $("#opAmoun…
ListIterator接口继承自Iterator接口,新增了add()等方法. 关于ListIterator的add()方法的作用(接口是没有方法实现的,但其实现类对于add()方法的实现机制大致相同,姑且这样说吧),<java核心技术 卷I>里如下表述: “如果多次调用add方法,将按照提供的次序把元素添加到链表中.它们被依次添加到迭代器当前位置之前.” 对于这种说法,很容易引发歧义,当前位置是什么?当前指向的元素,还是游标位置? 带着这种疑问,我查阅了ListIterator接口的API…
看到园友的一道面试题,很好奇,测试了一下结果. public class A { public static int X=B.Y ; public A() { ++X; } } public class B { public static int Y = A.X ; static B() { ++Y; } } static void Main(string[] args) { Console.WriteLine(A.X.ToString()); Console.WriteLine("B.Y&qu…
我们根据List中的源码分析, remove方法的原理: public boolean remove(Object o){      if(o ==null) {           for(intindex=0;index< size;index++)                if(elementData[index] ==null) {                      fastRemove(index);returntrue;                }       …
在ThreadLocal的get(),set()的时候都会清除线程ThreadLocalMap里所有key为null的value. 而ThreadLocal的remove()方法会先将Entry中对key的弱引用断开,设置为null,然后再清除对应的key为null的value. 本文分析remove方法 系列文章链接: http://www.cnblogs.com/noodleprince/p/8657399.html http://www.cnblogs.com/noodleprince/p…
1.jQuery的remove()方法 http://www.365mini.com/page/jquery-remove.htm ①返回值是jquery对象本身 所以可以做删除再添加的操作 // 移除元素n3 $n3.remove(); // 将n3重新追加到n1内部的末尾 $n3.appendTo("#n1"); 2:原生JS的DOM操作也有remove(); 例:document.getElementsByTagName("p")[0].remove();  …