我最近发现ArrayList在Java 中实际上有两种不同的实现(比我猜想的更好......).
所以我想知道为什么Arrays.asList(T... a)需要返回一个无法调整大小的列表?如果他们需要一个不可修改的列表,set(int index, E element)那么为什么要添加方法?
所以我的一般问题是为什么不java.util.ArrayList从Arrays.asList(T... a)方法中返回?
您还可以通过java.util.Arrays.ArrayList实施获得什么?
我想知道是否有一种快速/干净的方法来获得两组之间的对称差异?
我有:
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)
只是为了澄清我需要对称差异.
我正在寻找一个允许我将.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,或者做类似的事情.我不希望它使用注释作为必须,我只是希望能够使用一行代码和预定义的类加载文件.
如果这是重复,我道歉,但我在相关问题中找不到关于该主题的任何具体示例.
在阅读了Martin Fowler关于"贫血领域模型"的文章之后,我不知道为什么这被认为是一种反模式.大多数企业开发人员甚至认为它是一种反模式,因为AFAIK可能有90%的j2ee应用程序是以"贫血"方式设计的?
有人可以推荐进一步阅读这个主题(除了"领域驱动设计"一书),或者甚至更好,给出一个具体的例子来说明这种反模式如何以一种糟糕的方式影响应用程序设计.
谢谢,
java architecture domain-driven-design anti-patterns anemic-domain-model
我只是在徘徊为什么是前缀XXX?
据我所知,它用于笔记/提醒(或者至少这是我使用它,这就是我用Google搜索的大多数链接上的人使用它).
那么有谁知道XXX前缀来自哪里?
我有这个:
<a>
<b>
<t>text</t>
</b>
</a>
<a>
<t>text</t>
</a>
Run Code Online (Sandbox Code Playgroud)
所以我想选择文本而不管它在哪里.(请注意,它可以是不仅仅是1/2级别的任何地方,例如它可以没有父母)
这可能吗?
这主要是出于好奇.
如果有人遇到Object.finalize()的任何良好用法,除了调试/记录/分析目的外,我还在徘徊?
如果你没有遇到任何你会说好的用法会是什么?
我越来越:
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)时出现同样的错误. …
我真的无法理解为什么会发生以下情况:
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它看起来像一个Integer是true不是"直觉" d.equals(0)也应该是真实的.
Java文档说"同一个对象上的两个同步方法的调用不可能交错".我需要知道的是,synchronized是否还会阻止同一类的两个不同实例中的同步方法进行交错.
例如,类Worker具有名为process()的方法.我们有几个Worker在自己的线程中运行的实例.我们希望防止同时运行process()方法的多个实例.会同步吗?
谢谢.
java ×9
collections ×2
apache ×1
apache-poi ×1
architecture ×1
arraylist ×1
arrays ×1
autoboxing ×1
comments ×1
csv ×1
double ×1
eclipse ×1
equals ×1
excel ×1
finalizer ×1
set ×1
xml ×1
xpath ×1