2011-12-28 43 views
3

如果您尝试添加数据结构中已存在的某些内容,那么我有一些数据结构保持不变。这个决定可能是通过比较一个键或者使用一个等号函数来做出的。只有当对象的实例是结构的新实例时,它才会被添加到结构中。只有在不存在的情况下才能添加Java命名约定

我想知道你怎么命名这些方法? updateX(),addX(),putX()都是误导,但像addIfXDoesntExist()是丑陋的。

是否有一个约定或准标准或任何只是听起来不错,但短,但同时综合?

+3

如果它有任何帮助,['java.util.Set'](http://docs.oracle.com/javase/6/docs/api/java/util/Set.html)只是简单地调用这个“ add'”。 – 2011-12-28 16:45:59

+5

'ConcurrentMap'使用'putIfAbsent()'。 – 2011-12-28 16:46:00

+0

@OliCharlesworth java.util.Collections只是简单地调用这个'add' :) – 2011-12-29 15:47:31

回答

8

对于这样的逻辑,您可以返回一个布尔值,如果它是成功的add,则返回true;如果它已经存在,则返回false。这意味着你可以决定你是否不在乎结果与否以及if语句等

public boolean add(Object o){} 

他们这样做是集合实现内大量进行其他额外的逻辑。

+0

From Collections.add() - 你可以实际实现的:“确保这个集合包含指定的元素(可选操作)。如果这个集合由于调用而改变,则返回true(如果这个集合不允许重复并且已经包含指定的元素。)“。说真的。 – 2011-12-29 15:46:02

0

创建方法boolean tryAdd()似乎是一个好主意,如果添加了元素,则返回true;如果已经在结构中,则返回false。也可能没有返回类型。你可以创建并抛出ElementAlreadyInStructure检查异常,并根据需要进行处理。

+0

我会为这个答案投票,如果只是因为'tryAdd(T t):布尔值'它比'add(T t):boolean'更具描述性。然而,正如'Collections.add(T t):boolean'已经定义了相同的功能,只是使用add * should *不会混淆Java开发者。 – 2011-12-29 15:54:24

相关问题