标签: java

在Java中,可以从构造函数助手初始化final字段吗?

我有一个最终的非静态成员:

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)

java constructor final initialization

42
推荐指数
2
解决办法
2万
查看次数

Java标准版中有多少个类?

我很好奇Java标准库中有多少个类.也许有人知道一个近似的数字?

java

42
推荐指数
4
解决办法
3万
查看次数

在实际应用中使用Singleton Pattern的确切位置是什么?

我只是好奇使用单身模式...我知道模式是如何工作的以及它可以在哪里使用但我个人从未在任何实际应用中使用过.有人可以给出一个可以使用它的例子.如果有人可以解释它们在实际应用中的使用方式和位置,我真的很感激.谢谢,斯瓦蒂

java singleton

42
推荐指数
4
解决办法
6万
查看次数

Android Treeview

我知道有ExpandableListView但它最多只支持2个级别.我需要一个真正的树视图垂直列表,至少最多约5个级别(越多越好).

有什么建议?

编辑:

我看到有关使用自定义适配器并根据项目级别设置填充的说明.

我有一个没有排序的ArrayList对象具有ID和父ID,我也动态地向这个数组添加项目.

谁能给我一些我可以这样做的例子?

java treeview android

42
推荐指数
4
解决办法
5万
查看次数

为什么基于regexp的Java中的大多数字符串操作?

在Java中,有许多方法都与操作字符串有关.最简单的例子是String.split("something")方法.

现在许多方法的实际定义是它们都将正则表达式作为它们的输入参数.这使得所有非常强大的构建块成为可能.

现在,您将在许多方法中看到两种效果:

  1. 每次调用方法时,它们都会重新编译表达式.因此,它们会对性能产生影响.
  2. 我发现在大多数"现实生活"的情况下,这些方法都被称为"固定"文本.拆分方法最常见的用法更糟糕:通常使用单个字符(通常是',a';'或'&')来调用它.

因此,不仅默认方法功能强大,而且它们实际上用于实际使用的内容也显得过于强大.在内部,我们开发了一种"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)

java regex string language-design

42
推荐指数
2
解决办法
2404
查看次数

Java解释器?

有网上有翻译吗?我可以在其中抛出一行或两行java并输出结果?

java

42
推荐指数
4
解决办法
5万
查看次数

这个正则表达式如何找到三角形数字?

这是一系列教育正则表达式文章的一部分,这是对嵌套引用概念的温和介绍.

前几个三角形数字是:

 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)

有很多方法可以检查数字是否为三角形.有一种有趣的技术使用正则表达式如下:

  • 给定n,我们首先创建一个长度为n的字符串,其中填充相同的字符
  • 然后我们将此字符串与模式匹配 ^(\1.|^.)+$
    • 当且仅当此模式与字符串匹配时,n为三角形

以下是一些片段,表明它适用于多种语言:

PHP(在ideone.com上)

$r = '/^(\1.|^.)+$/';

foreach (range(0,50) as $n) {
  if (preg_match($r, str_repeat('o', $n))) {
     print("$n ");
  }
}
Run Code Online (Sandbox Code Playgroud)

Java(在ideone.com上)

for (int n = 0; n <= 50; …
Run Code Online (Sandbox Code Playgroud)

c# java regex capturing-group nested-reference

42
推荐指数
1
解决办法
2253
查看次数

JMS连接,会话和生产者/使用者之间的关系

我想将一批20k JMS消息发送到同一队列.我正在使用10个线程分割任务,因此每个线程将处理2k个消息.我不需要交易.

我想知道是否有一个连接,一个会话和10个生产者是否是推荐的方式?

如果我有一个生产者共享所有线程怎么样?我的邮件会损坏还是会同步发送(不会带来性能提升)?

如果我总是连接到同一个队列,那么决定是否创建新连接或会话的一般原则是什么?

谢谢你,很抱歉一下子就问了很多.

(这是一个类似的问题,但它并没有完全回答我正在寻找的内容.长期存在的JMS会话.保持JMS连接/ JMS会话总是打开一个糟糕的实践吗?)

java jms

42
推荐指数
2
解决办法
2万
查看次数

如何检查给定路径是否可能是另一条路径的子路径?

我试图找到给定的路径是否可能使用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)

java file-io

42
推荐指数
4
解决办法
2万
查看次数

JAX-RS:多条路径

有可能做那样的事吗?

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.

java jax-rs

42
推荐指数
3
解决办法
4万
查看次数