如何向链表实例添加新方法?

时间:2016-11-30 08:20:07

标签: java methods linked-list

我已宣布class名为ResultClass,我已从该<{p}}发出linkedList

private LinkedList<ResultClass> listOfResults;

现在我想添加一个名为getSample(Double d)的新方法,我希望将其用作listOfResults.getSample(0.5)。如何在Java中声明类似的方法?

4 个答案:

答案 0 :(得分:2)

你必须为此创建一个新类。 E.g:

public class SamplingLinkedList<T> extends LinkedList<T> {
   public List<T> getSample(double d) {
       return // something;
   }
}

答案 1 :(得分:1)

如果你在谈论作为java.util的LinkedList - 答案:你不能这样做。与其他编程语言相比,Java不允许您添加方法到现有类(除非您拥有源代码并且更改该类实现)。

您可以做的一件事:创建自己的List接口实现(并使用LinkedList实现它)并添加您正在寻找的那些方法。最简单的方法是扩展java.util.LinkedList;但是,如果你赞成作文而不是inhertiance ,你可以选择自己完全实现List接口。

答案 2 :(得分:0)

将方法添加到的唯一方法是扩展类:

class MyResultList extends LinkedList<ResultClass>

并在那里添加方法。

但是这需要你创建该类的实例:你不能&#34;#34;改造&#34;现有实例的方法。

更简单的替代方法是声明一个将链表作为参数的方法:

static ResultClass getSample(LinkedList<ResultClass> results, double valye)

没有必要将其列入该链接列表的课程。

甚至可能不需要使用LinkedList作为参数:也许该方法的逻辑仍可用于ListCollection或{{ 1}}而不是。这将使该方法更普遍适用。你不能用基于继承的方法做到这一点。

答案 3 :(得分:0)

  • 将其定义为$x = '<p>aaaa</p> <p>&nbsp;</p> <p>asd</p>'; $spaces = array('&nbsp;',' '); echo str_replace($spaces,'',strip_tags($x)); 中的getSample方法。
  • 扩展LinkedList(可能只包装一个真实的,在这种情况下你做的选项1)
  • 使用ResultClass方法将链接列表作为附加参数,可以在任何地方定义。