Java对象引用任务

Java对象引用任务,java,object,methods,Java,Object,Methods,我需要帮助找出一种方法,如何将元素添加到我的数组列表中。一旦添加,我想让它显示为真或假,如果元素是以前添加的,如果不是,然后让它显示为真,如在成功添加的新光盘。到目前为止,这是我代码的一部分 public class MediaArchive { private String name ; private String owner ; private ArrayList<Disc> list; //Constructor public MedieArkiv(String name

我需要帮助找出一种方法,如何将元素添加到我的数组列表中。一旦添加,我想让它显示为真或假,如果元素是以前添加的,如果不是,然后让它显示为真,如在成功添加的新光盘。到目前为止,这是我代码的一部分

public class MediaArchive 
{
private String name ;
private String owner ;
private ArrayList<Disc> list;

//Constructor
public MedieArkiv(String name, String owner) {
    this.name = name;
    this.owner = name;
    list = new ArrayList<Disc>();
}

//Method for adding a new "Disc" to the ArrayList.
public void addDisc(Disc newDisc) { 
    list.add(newDisc);
}
公共类MediaArchive
{
私有字符串名称;
私人字符串所有者;
私有数组列表;
//建造师
公共MedieArkiv(字符串名称、字符串所有者){
this.name=名称;
this.owner=名称;
列表=新的ArrayList();
}
//用于向ArrayList添加新“光盘”的方法。
public void addDisc(Disc newDisc){
列表。添加(newDisc);
}
因此,我的问题是,如何制作一种方法,将“新光盘”添加到阵列列表中?并将其保存为参数,以便列表通过使用True或false来显示是否添加了这些光盘。
旁注:我是通过BlueJ学习这一点的,对这门语言还是很生疏。

实现
集合。添加
列表。添加
返回:

true
如果此集合因调用而更改

…(见附件)

请注意,如上所述,对于
ArrayList
(如果
add
未引发
异常,则此操作将始终返回
true

您也可以使用
设置
,并在
光盘
类中实现
等于
哈希代码
,以防需要检查以确保没有添加重复项

Set.add方法返回:

true
如果此集合尚未包含指定的元素


…(请参阅)。

实现
集合。添加
列表。添加
返回:

true
如果此集合因调用而更改

…(见附件)

请注意,如上所述,对于
ArrayList
(如果
add
未引发
异常,则此操作将始终返回
true

您也可以使用
设置
,并在
光盘
类中实现
等于
哈希代码
,以防需要检查以确保没有添加重复项

Set.add方法返回:

true
如果此集合尚未包含指定的元素


…(请参阅)。

ArrayList
has
Contains
方法,您需要传递参数,以便在已添加值时返回true,否则返回false

就你而言

if(list.contains(newDisc))   
{    
//Element already added
}   
else
{
list.add(newDisc);
}

ArrayList
has
Contains
方法,您需要传递参数,以便在已添加值时返回true,否则返回false

就你而言

if(list.contains(newDisc))   
{    
//Element already added
}   
else
{
list.add(newDisc);
}

如果您试图获取唯一的
Disc
值列表,应首先覆盖
Disc
equals
hashCode
方法。这允许您确定是否应将
Disc
的两个不同实例视为具有相同的值

然后,将
ArrayList
替换为
LinkedHashSet
LinkedHashSet
Set
的一个实现(根据合同,它禁止重复值),但也保留了插入顺序-因此它有点像没有重复项的
列表


现在,如果元素为“new”,则
LinkedHashSet.add(Disc)
将返回
true
,和
false
,如果它已经存在。

如果您试图获取唯一的
Disc
值列表,则应首先覆盖
Disc
equals
hashCode
方法。这允许您确定是否应将
Disc
的两个不同实例视为具有相同的值价值观

然后,将
ArrayList
替换为
LinkedHashSet
LinkedHashSet
Set
的一个实现(根据合同,它禁止重复值),但也保留了插入顺序-因此它有点像没有重复项的
列表


现在,如果元素为“new”,则
LinkedHashSet.add(Disc)
将返回
true
,和
false
,如果它已经存在。

list.add已经返回true或false…只需使用它从addDisc返回以显示结果,就意味着编写一个方法,将
list
作为参数,另外将
String name
String owner
作为参数。只需调用
return list.add(new Disc(name,owner))方法中的
。在
光盘
中重写
equals
hashCode
,然后将项目添加到
链接数据库集
,而不是
数组列表
.list。add已返回true或false…只需使用它从addDisc返回以显示结果,就意味着编写一个以
列表
为参数的方法并添加传统上
字符串名称
字符串所有者
作为参数。只需调用
返回列表。添加(新光盘(名称,所有者))方法中的
。在
光盘
中重写
equals
hashCode
,然后将项目添加到
链接数据库集
,而不是
数组列表
列表的返回值。add
本身没有多大用处-它。您必须先进行
包含
检查,如果您这样做,请你也可以只使用一个
集合
@AndyTurner,实际上这对我来说有点神秘。API声明“如果这个集合由于调用而改变”,但我无法理解它会返回
false
而不是抛出异常的情况。坏的类强制转换、不可写的列表等。都抛出异常。看起来像“始终返回
true
规则对于
ArrayList
可能是正确的,但是对于从
List
派生的任何类的承诺都强制执行上述内容。TLDR您是对的。这是