我有一个最终的非静态成员:
private final HashMap<String,String> myMap;
Run Code Online (Sandbox Code Playgroud)
我想使用构造函数调用的方法初始化它.由于myMap是final,我的"helper"方法无法直接初始化它.我当然有选择:
我可以直接在构造函数中实现myMap初始化代码.
MyConstructor (String someThingNecessary)
{
myMap = new HashMap<String,String>();
myMap.put("blah","blahblah");
// etc...
// other initialization stuff unrelated to myMap
}
Run Code Online (Sandbox Code Playgroud)
我可以让我的帮助器方法构建HashMap,将其返回到构造函数,然后让构造函数将对象分配给myMap.
MyConstructor (String someThingNecessary)
{
myMap = InitializeMyMap(someThingNecessary);
// other initialization stuff unrelated to myMap
}
private HashMap<String,String> InitializeMyMap(String someThingNecessary)
{
HashMap<String,String> initializedMap = new HashMap<String,String>();
initializedMap.put("blah","blahblah");
// etc...
return initializedMap;
}
Run Code Online (Sandbox Code Playgroud)
方法#2很好,但是,我想知道是否有某种方法可以让helper方法直接操作myMap.也许一个修饰符指示它只能由构造函数调用?
MyConstructor (String someThingNecessary)
{
InitializeMyMap(someThingNecessary);
// other initialization stuff unrelated to myMap
}
// helper doesn't work since it can't modify …Run Code Online (Sandbox Code Playgroud) 我只是好奇使用单身模式...我知道模式是如何工作的以及它可以在哪里使用但我个人从未在任何实际应用中使用过.有人可以给出一个可以使用它的例子.如果有人可以解释它们在实际应用中的使用方式和位置,我真的很感激.谢谢,斯瓦蒂
我知道有ExpandableListView但它最多只支持2个级别.我需要一个真正的树视图垂直列表,至少最多约5个级别(越多越好).
有什么建议?
编辑:
我看到有关使用自定义适配器并根据项目级别设置填充的说明.
我有一个没有排序的ArrayList对象具有ID和父ID,我也动态地向这个数组添加项目.
谁能给我一些我可以这样做的例子?
在Java中,有许多方法都与操作字符串有关.最简单的例子是String.split("something")方法.
现在许多方法的实际定义是它们都将正则表达式作为它们的输入参数.这使得所有非常强大的构建块成为可能.
现在,您将在许多方法中看到两种效果:
因此,不仅默认方法功能强大,而且它们实际上用于实际使用的内容也显得过于强大.在内部,我们开发了一种"fastSplit"方法,可以拆分固定字符串.我在家里写了一个测试,看看如果知道它是一个单一的字符,我能做多快.两者都明显快于"标准"分割方法.
所以我想知道:为什么Java API会以现在的方式选择?有什么理由去做这个而不是像split(char)和split(String)以及splitRegex(String)这样的东西?
更新:我打了几个电话,看看分割字符串的各种方法需要多长时间.
简短摘要:它有很大的不同!
我为每个测试用例做了10000000次迭代,总是使用输入
"aap,noot,mies,wim,zus,jet,teun"
Run Code Online (Sandbox Code Playgroud)
并始终使用','或","作为拆分参数.
这是我在我的Linux系统上得到的(它是一个Atom D510盒子,所以它有点慢):
fastSplit STRING
Test 1 : 11405 milliseconds: Split in several pieces
Test 2 : 3018 milliseconds: Split in 2 pieces
Test 3 : 4396 milliseconds: Split in 3 pieces
homegrown fast splitter based on char
Test 4 : 9076 milliseconds: Split in several pieces
Test 5 : 2024 milliseconds: Split in 2 pieces
Test 6 : 2924 milliseconds: Split in 3 pieces
homegrown …Run Code Online (Sandbox Code Playgroud) 这是一系列教育正则表达式文章的一部分,这是对嵌套引用概念的温和介绍.
前几个三角形数字是:
1 = 1
3 = 1 + 2
6 = 1 + 2 + 3
10 = 1 + 2 + 3 + 4
15 = 1 + 2 + 3 + 4 + 5
Run Code Online (Sandbox Code Playgroud)
有很多方法可以检查数字是否为三角形.有一种有趣的技术使用正则表达式如下:
^(\1.|^.)+$
以下是一些片段,表明它适用于多种语言:
$r = '/^(\1.|^.)+$/';
foreach (range(0,50) as $n) {
if (preg_match($r, str_repeat('o', $n))) {
print("$n ");
}
}
Run Code Online (Sandbox Code Playgroud)
for (int n = 0; n <= 50; …Run Code Online (Sandbox Code Playgroud) 我想将一批20k JMS消息发送到同一队列.我正在使用10个线程分割任务,因此每个线程将处理2k个消息.我不需要交易.
我想知道是否有一个连接,一个会话和10个生产者是否是推荐的方式?
如果我有一个生产者共享所有线程怎么样?我的邮件会损坏还是会同步发送(不会带来性能提升)?
如果我总是连接到同一个队列,那么决定是否创建新连接或会话的一般原则是什么?
谢谢你,很抱歉一下子就问了很多.
(这是一个类似的问题,但它并没有完全回答我正在寻找的内容.长期存在的JMS会话.保持JMS连接/ JMS会话总是打开一个糟糕的实践吗?)
我试图找到给定的路径是否可能使用java的另一个路径的子.两条路径可能都不存在.
说c:\Program Files\My Company\test\My App是一个可能的孩子c:\Program Files.
目前我正在这样做
boolean myCheck(File maybeChild, File possibleParent)
{
return maybeChild.getAbsolutePath().startsWith( possibleParent.getAbsolutePath());
}
Run Code Online (Sandbox Code Playgroud) 有可能做那样的事吗?
import javax.ws.rs.GET;
import javax.ws.rs.Path;
public class xxx
{
@GET
@Path(value = "path1")
public Response m1()
{
...
}
@GET
@Path(value = "path2")
public Response m2()
{
...
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用RESTEasy.