Tag: java

如何将字符数组转换回string?

我有一个字符数组: char[] a = {'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'}; 我目前的解决办法是做 String b = new String(a); 但是肯定有这样做的更好的方法?

迭代string中所有字符的最快方法

在Java中,迭代string中所有字符的最快方法是: String str = "a really, really long string"; for (int i = 0, n = str.length(); i < n; i++) { char c = str.charAt(i); } 或这个: char[] chars = str.toCharArray(); for (int i = 0, n = chars.length; i < n; i++) { char c = chars[i]; } 编辑: 我想知道的是,如果在长时间迭代期间重复调用charAt方法的代价最终小于或大于在开始时对toCharArray执行单个调用的成本,然后直接访问数组迭代。 如果有人能够为不同的string长度提供一个稳健的基准,那么记住JIT预热时间,JVM启动时间等等,而不是两次调用System.currentTimeMillis()之间的区别。

Java同步方法locking对象或方法?

如果我在同一个类中有两个同步方法,但是每个访问不同的variables,两个线程可以同时访问这两个方法吗? 锁是在对象上发生的,还是与synchronized方法中的variables一样具体? 例: class X { private int a; private int b; public synchronized void addA(){ a++; } public synchronized void addB(){ b++; } } 2个线程可以同时访问X类的同一个实例x.addA( )和x.addB()吗?

如何在Java中将地图转换为列表?

将Map<key,value>转换为List<value>的最佳方法是什么? 只是迭代所有的值,并将它们插入到列表中,或者我忽略了一些东西?

为什么sun.misc.Unsafe存在,如何在现实世界中使用?

有一天我遇到了sun.misc.Unsafe软件包,并对它能做的事情感到惊讶。 当然,这个class没有证件,但是我想知道是否有使用它的好理由。 哪些情况下可能会出现需要使用的情况? 在真实世界的场景中如何使用它? 而且,如果你确实需要它,那么这是不是表明你的devise有可能是错的? 为什么Java甚至包含这个类?

为什么Math.round(0.49999999999999994)返回1

在下面的程序中,您可以看到,对于每个稍微小于.5值,向下取整,除了0.5 。 for (int i = 10; i >= 0; i–) { long l = Double.doubleToLongBits(i + 0.5); double x; do { x = Double.longBitsToDouble(l); System.out.println(x + " rounded is " + Math.round(x)); l–; } while (Math.round(x) > i); } 版画 10.5 rounded is 11 10.499999999999998 rounded is 10 9.5 rounded is 10 9.499999999999998 rounded […]

Maven家长pom与模块pom

在一个多项目构build中,似乎有几种方法来组织父母,我想知道是否有人对每种方式的优点/缺点有什么想法。 有一个父pom最简单的方法将把它放在一个项目的根,即 myproject/ myproject-core/ myproject-api/ myproject-app/ pom.xml 其中pom.xml既是父项目也是描述了-core -api和-app模块 下一个方法是把父母分成它自己的子目录 myproject/ mypoject-parent/ pom.xml myproject-core/ myproject-api/ myproject-app/ 父pom仍然包含模块,但它们是相对的,例如../myproject-core 最后,有模块定义和父项分开的选项 myproject/ mypoject-parent/ pom.xml myproject-core/ myproject-api/ myproject-app/ pom.xml 父pom包含任何“共享”configuration(dependencyManagement,属性等),myproject / pom.xml包含模块列表。 其目的是扩展到大规模的构build,所以应该扩展到大量的项目和文物。 一些奖励问题: 在源代码控制,部署目录,通用插件等中定义各种共享configuration的最好的地方在哪里(我假设父母,但我经常被这个咬伤,他们已经结束在每个项目,而不是一个普通的)。 maven-release插件,hudson和nexus如何处理你如何设置你的多项目(可能是一个巨大的问题,如果任何人被多个项目build立的话,已经被捕获了)。 编辑:每个子项目有自己的pom.xml,我已经离开它保持简洁。

我怎样才能得到最新的JRE / JDK作为一个zip文件,而不是EXE或MSI安装程序?

我喜欢确保所有东西都可以通过复制Java文件夹的内容并设置环境variables来工作。 我通常在虚拟机中运行安装程序,压缩\ java文件夹内容,返回到虚拟机的快照,然后解压缩压缩文件。 我找不到最新的JRE / JDK作为zip文件的地方… http://java.sun.com/javase/downloads/index.jsp http://download.java.net/jdk6/ 或者,是否安全地假设来自sun的exe安装程序只是将整个事情解压缩,而不用搞乱registry,环境variables等等? 相关: 在Windows上手动安装Java?

听众安置坚持传统的(非中介)MVC模式

我正在Swing中实现一个程序,并且我已经读过了Nirmal在Swing中实现这个模式 ,这似乎对整个“职责分离”概念有一个相当优雅的处理。 但是,由于我正在开发比由Nirml发布的更复杂的程序,而Nirml由单个JFrame容器组成,所以我正在寻找如何正确实现MVC的指导。 我的程序将由子容器等组成。 我很好奇,如何控制器应该如何实现的逻辑背后的定义和assigining所有的监听器的视图..或者如果控制器定义每个单一的视图组件的监听器是实际的? 看起来我需要在View的顶级容器中使用一个方法来允许Controller调用视图来向所讨论的组件添加一个Listener? 所以我需要一个方法链,每个方法将顶层容器中的侦听器传递给持有组件的直接容器。最后,容器调用addActionListener()。 这是正确的方式来处理MVC中的监听器? 在MVC中必须定义Controller中View的每个组件的所有监听器,还是一个有用的练习? 这也意味着我在顶级容器(View)中创build了方法,使Controller可以将侦听器分配给子容器中的每个组件。

如何将MouseListener添加到Java Swing Canvas上的项目

我想创build一个Java面板,在用户点击的地方创build对象。 由于我的实际应用程序使用MVC方法,我也希望这些对象能够在模型更改时重新绘制自己,并提供菜单来更改它们的属性。 我认为控制x和y位置的最好方法是采用基于canvas的方法, JPanel从paintComponent方法调用这些对象的绘制方法。 然而,这只会在canvas上绘制形状,并不会添加对象本身,从而失去控制对象属性的所有function。 如果有人能告诉我我想要做的最好的方法,我将非常感激。 我已经创build了一些示例代码,可以在下面看到。 点击时,我想圆圈改变颜色,这是使用MouseListener实现的(它基本上代表了改变这个小例子中的模型属性)。 此外,我只是想确保放大/缩小仍然可以使用任何示例代码/build议可以提供,所以我已经添加button来放大和缩小对象进行快速testing。 import java.awt.*; import java.awt.event.*; import java.awt.geom.*; import javax.swing.*; import java.awt.geom.Ellipse2D; public class Main { public static void main(String args[]) { EventQueue.invokeLater(new Runnable() { @Override public void run() { JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); ExamplePanel panel = new ExamplePanel(); frame.add(panel); frame.pack(); frame.setVisible(true); } }); } //I […]