草庐IT

Java 列表 : initial size

哪种方式更适合初始化Java列表:newArrayList(futureSize)newArrayList(futureSize+1)(为了防止调整列表的大小)futureSize是列表一旦填充后的future大小。注意:如果您要评论/回答有关“过早优化是...”、“您应该改为...”的任何内容,请不要。我正在寻找我的问题的答案,仅此而已。 最佳答案 从add(Ee)和(类似方法)的实现可以看出publicbooleanadd(Ee){ensureCapacity(size+1);elementData[size++]=e;retu

Java : Char vs String byte size

惊奇的发现,下面的代码System.out.println("Charactersize:"+Character.SIZE/8);System.out.println("Stringsize:"+"a".getBytes().length);输出这个:Charactersize:2Stringsize:1我假设单个字符串应该占用与单个字符相同(或更多)的字节数。我特别想知道。如果我有一个包含多个字段的javabean,它的大小将如何增加取决于字段的性质(字符、字符串、boolean值、vector等...)我假设所有java对象都有一些(可能是最小的)足迹,而这些足迹中最小的一个将是一

java - 解压缩文件 Zip 异常 : invalid entry size (expected 193144 but got 193138 bytes)

我正在尝试解压缩文件(从FTP服务器检索):ZipInputStreamzis=newZipInputStream(newFileInputStream(zipFile));ZipEntryze=zis.getNextEntry();while(ze!=null){StringfileName=ze.getName();FilenewFile=newFile(outputFileName+outputFolder+File.separator+fileName);System.out.println("fileunzip:"+newFile.getAbsoluteFile());Fil

java - 二叉树的大小方法

我刚刚看到这段用于查找二叉树大小的代码。publicintsize(){return(size(root));}privateintsize(Nodenode){if(node==null)return(0);else{return(size(node.left)+1+size(node.right));}}我很困惑为什么会有两种方法和一种没有参数。我可以猜到这是一些很好的做法,但无法想到原因。 最佳答案 一个是public,一个是private。所以一个不带任何参数对外暴露使用publicintsize(),一个只对内使用对外隐藏

java.lang.OutOfMemoryError : bitmap size exceeds VM budget 错误

所以我的ListView有一个延迟图像加载器。我也用thistutorial为了更好的内存管理,并将SoftReference位图图像存储在我的ArrayList中。我的ListView可以从数据库加载8张图片,然后一旦用户一直滚动到底部,它就会加载另外8张图片,依此类推。当大约有35张或更少图片时没有问题,但是,我的应用程序因OutOfMemoryError强制关闭。我无法理解的是我的代码在trycatch中:try{BitmapFactory.Optionso=newBitmapFactory.Options();o.inJustDecodeBounds=true;BitmapFa

Java:如何为 `toArray`实现 `Collection`

现在,我有:publicT[]toArray(T[]old){T[]arr=Arrays.copyOf(old,old.length+size());inti=old.length;for(Eobj:this){arr[i]=old.getClass().getComponentType().cast(obj);++i;}returnarr;}(请注意,这不符合axtavt指出的契约(Contract)。)我在哪里收到这个警告:Typesafety:Uncheckedcastfromcapture#2-of?toT这仍然是最好/最直接的实现方式吗?我可以在没有警告的情况下以某种方式对其

java - 空 Java 字符串的大小

我听一位同事说,如果我在Java类中删除一个String成员,我将支付“24个字节”,即使该String为空。那是准确的吗?Integer、Float、Double是否相同?(与int、float、double不同,它们分别只有4、4和8个字节)。 最佳答案 您将为引用支付4或8个字节。您是否会为“容器”对象的每个实例支付额外的对象费用取决于您获取空字符串的方式。例如,如果您使用文字"",那么所有实例将引用同一个对象,因此您只需为引用本身付费。p>如果您为每个实例创建一个单独的空字符串,那么显然这将占用更多内存。

java - 在数组上调用 .length 与保存 size 变量在性能上有区别吗?

我正在创建一个模拟程序,我希望代码非常优化。现在我有一个数组,它在我使用的各种for循环中循环了很多for(inti=0;i我想知道如果我在类中保存一个变量来指定这个数组长度,然后使用它来代替,是否会更快。或者它是否重要。 最佳答案 访问数组的长度属性是尽可能快的。您会看到有人建议您在进入循环之前保存数据结构大小,因为这意味着每次迭代都使用一个方法。但这是一种微优化,几乎不重要。在您有数据告诉您这是性能问题的原因之前,不要太担心这种事情。您应该花更多时间考虑要嵌入该循环的算法、可能的并行性等。这对您寻求优化解决方案的意义要大得多。

java - @Size(min, max) 但不是必需的

您好,在我的springwebapp中,我有一个密码变量,我希望它至少为0个字符或多于6个且少于20个。我知道有注释:@Size(min=6,max=20)但我不知道如何增加密码可以是0个字符的可能性。有人可以帮我解决这个问题吗? 最佳答案 鉴于评论,您可以使用StringTrimmerEditor将空字符串转换为null,然后@Size检查不会触发(null在@Size中被认为是有效的)。在您的Controller中添加以下方法:@InitBinderpublicvoidinitBinder(WebDataBinderbinder

java - Java同步HashMap中的size()、put()、remove()、get()是原子的吗?

我将JavaMap声明为Mapmap=Collections.synchronizedMap(newHashMap());处理并发问题,对map上的所有操作进行同步。但是,我读到当操作是原子操作时,同步在synchronizedMap上不是必需的。我检查了JavaAPI,HashMap的文档似乎没有提到哪些是原子的,所以我不确定哪些是原子的。我正在同步对map的以下调用:map.size()map.put()map.remove()map.get()但是如果有些是原子的,那么似乎不需要同步。哪些是原子的? 最佳答案 同步map顾名思