小编Sim*_*eon的帖子

为什么Arrays.asList()返回自己的ArrayList实现

我最近发现ArrayList在Java 中实际上有两种不同的实现(比我猜想的更好......).

所以我想知道为什么Arrays.asList(T... a)需要返回一个无法调整大小的列表?如果他们需要一个不可修改的列表,set(int index, E element)那么为什么要添加方法?

所以我的一般问题是为什么不java.util.ArrayListArrays.asList(T... a)方法中返回?

您还可以通过java.util.Arrays.ArrayList实施获得什么?

java arrays collections arraylist

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

在java中获取两组之间的对称差异的最佳方法是什么?

我想知道是否有一种快速/干净的方法来获得两组之间的对称差异?

我有:

Set<String> s1 = new HashSet<String>();
s1.add("a");
s1.add("b");
s1.add("c");

Set<String> s2 = new HashSet<String>();
s2.add("b");
Run Code Online (Sandbox Code Playgroud)

我需要这样的东西:

Set<String> diff = Something.diff(s1, s2);
// diff would contain ["a", "c"]
Run Code Online (Sandbox Code Playgroud)

只是为了澄清我需要对称差异.

java collections set

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

用于从CSV文件创建对象的Java API

我正在寻找一个允许我将.csv内容映射到对象的库.

就像是:

public class Person {

    private String name;
    private int age;

    @CsvField("name")
    public String getName() {
        return this.name;
    }

    @CsvField("age")
    public int getAge() {
        return this.age;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后说出类似的话:

final Person filledWithDataFromCsv = csvApi.load(csvFilepath, Person.class);
Run Code Online (Sandbox Code Playgroud)

来自给定的CSV:

#name, age
tom, 11
jim, 32
Run Code Online (Sandbox Code Playgroud)

有没有人知道这样的API,或者做类似的事情.我不希望它使用注释作为必须,我只是希望能够使用一行代码和预定义的类加载文件.

java csv

25
推荐指数
3
解决办法
5万
查看次数

关于为什么'贫血领域模型'被认为是反模式的具体例子

如果这是重复,我道歉,但我在相关问题中找不到关于该主题的任何具体示例.

在阅读了Martin Fowler关于"贫血领域模型"的文章之后,我不知道为什么这被认为是一种反模式.大多数企业开发人员甚至认为它是一种反模式,因为AFAIK可能有90%的j2ee应用程序是以"贫血"方式设计的?

有人可以推荐进一步阅读这个主题(除了"领域驱动设计"一书),或者甚至更好,给出一个具体的例子来说明这种反模式如何以一种糟糕的方式影响应用程序设计.

谢谢,

java architecture domain-driven-design anti-patterns anemic-domain-model

22
推荐指数
6
解决办法
9607
查看次数

Eclipse中的XXX注释前缀来自哪里?

我只是在徘徊为什么是前缀XXX

据我所知,它用于笔记/提醒(或者至少这是我使用它,这就是我用Google搜索的大多数链接上的人使用它).

那么有谁知道XXX前缀来自哪里?

java eclipse comments

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

无论XPATH的级别如何,都选择一个XML元素

我有这个:

<a>
  <b>
    <t>text</t>
  </b>
</a>
<a>
  <t>text</t>
</a>
Run Code Online (Sandbox Code Playgroud)

所以我想选择文本而不管它在哪里.(请注意,它可以是不仅仅是1/2级别的任何地方,例如它可以没有父母)

这可能吗?

xml xpath

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

finalize()方法的良好用途

这主要是出于好奇.

如果有人遇到Object.finalize()的任何良好用法,除了调试/记录/分析目的外,我还在徘徊?

如果你没有遇到任何你会说好的用法会是什么?

java finalizer object-destruction

16
推荐指数
2
解决办法
2887
查看次数

标头签名无效; 在excel文档上使用Apache POI的IOException

我越来越:

java.io.IOException:标头签名无效; 读取0x000201060000FFFE,预期为0xE11AB1A1E011CFD0

尝试使用apache POI HPSF向Excel文档添加一些自定义属性时.

我完全确定该文件是Excel OLE2(不是HTML,XML或Excel不会抱怨的其他内容).

这是我的代码的相关部分:

try {
     final POIFSFileSystem poifs = new POIFSFileSystem(event.getStream());
     final DirectoryEntry dir = poifs.getRoot();
     final DocumentEntry dsiEntry = (DocumentEntry)
             dir.getEntry(DocumentSummaryInformation.DEFAULT_STREAM_NAME);

     final DocumentInputStream dis = new DocumentInputStream(dsiEntry);
     final PropertySet props = new PropertySet(dis);
     dis.close();
     dsi = new DocumentSummaryInformation(props);
    }
    catch (Exception ex) {
        throw new RuntimeException
            ("Cannot create POI SummaryInformation for event: " + event +
              ", path:" + event.getPath() + 
              ", name:" + event.getPath() +
              ", cause:" + ex);
    }
Run Code Online (Sandbox Code Playgroud)

尝试使用word和power point文件(也是OLE2)时出现同样的错误. …

java apache excel apache-poi

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

比较Java中的双精度会产生奇怪的结果

我真的无法理解为什么会发生以下情况:

Double d = 0.0;
System.out.println(d == 0); // is true
System.out.println(d.equals(0)); // is false ?!
Run Code Online (Sandbox Code Playgroud)

然而,这可以按预期工作:

Double d = 0.0;
System.out.println(d == 0.0); // true
System.out.println(d.equals(0.0)); // true
Run Code Online (Sandbox Code Playgroud)

我很肯定这与某种方式的自动装箱有关,但我真的不知道为什么0在使用==操作符和.equals调用时会有不同的方法.

这不是暗示违反equals合同吗?

  *  It is reflexive: for any non-null reference value
  *     x, x.equals(x) should return
  *     true.

编辑:

谢谢你的快速答案.我认为它的盒装方式不同,真正的问题是:它为什么装箱不同?我的意思是,这将是更直观,如果d == 0d不是d.equals(0d)非常直观和预期,但是如果d == 0它看起来像一个Integertrue不是"直觉" d.equals(0)也应该是真实的.

java double autoboxing equals

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

关于Java同步的问题

Java文档说"同一个对象上的两个同步方法的调用不可能交错".我需要知道的是,synchronized是否还会阻止同一类的两个不同实例中的同步方法进行交错.

例如,类Worker具有名为process()的方法.我们有几个Worker在自己的线程中运行的实例.我们希望防止同时运行process()方法的多个实例.会同步吗?

谢谢.

java synchronization

12
推荐指数
1
解决办法
1万
查看次数