Java菜鸟问题之定义数据结构

我的leader让我定义一个数据结构!
有两个类:Package(属性:name、type、operation等等。方法包括:add,delete,以及对Field字段的添加、删除等功能方法)和Field(属性:name、type、operations等等,方法:add,delete等等)!
一个Package包含多个Field字段(也就是说组合关系!)他的要求是用类似c的struct+动态数组定义一个数据结构!
这里我不知道这个动态数组应该怎么加入!挺基础的一个设计!哪位大侠出出主意?呵呵
[b]问题补充:[/b]
add,delete的作用:在Package对Field字段进行删除或者添加!原则还是Package包含(组合关系)多个Field字段,可以删除,添加某个字段!

我的设想是:Package类的某个属性为Field对象。这样二者就联系起来。 然后在声明一个class FiledCollection , 里面维护一个私有的HashTable, 用这个类的实例来保存一个个的FiledManager实例, Packagemanager也一样, 这样程序整洁, 扩展性强。关键就是这里的FieldCollection怎样写?小弟不懂啊!

给出示例代码吧!
package cainiao;

public class Package {
private String name;
private String type;
private Field field;

public Package(String name, String type, Field field) {
    this.name = name;
    this.type = type;
    this.field = field;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getType() {
    return type;
}

public void setType(String type) {
    this.type = type;
}

public Field getField() {
    return field;
}

public void setField(Field field) {
    this.field = field;
}

}

package cainiao;

public class Field {
private String name;
private String type;
private String operation;

public Field(String name, String type, String operation) {

    this.name = name;
    this.type = type;
    this.operation = operation;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getType() {
    return type;
}

public void setType(String type) {
    this.type = type;
}

public String getOperation() {
    return operation;
}

public void setOperation(String operation) {
    this.operation = operation;
}

}

不知描述清楚没?呵呵

[b]问题补充:[/b]
我的设想是:[color=red]Package类的某个属性为Field对象。这样二者就联系起来。 然后在声明一个class FiledCollection , 里面维护一个私有的HashTable, 用这个类的实例来保存一个个的FiledManager实例, Packagemanager也一样, [/color]这样程序整洁, 扩展性强。关键就是这里的FieldCollection怎样写?PackageCollection咋写?我的设想正确不?
[b]问题补充:[/b]
我这个leader说的是struct+动态数组个数据结构定义!我就直接想用arraylist,这是我的个人想法,不过我就是不知道这个动态数组咋加进去?firefly兄你写出点代码出来看看!呵呵,我不知道咋写!他只是让我想。也没提示,说提示就没意思了!呵呵,哪位高人来提示一下!
[b]问题补充:[/b]
hashtable?哦,那是以前的想法!现在就是想用arraylist。
firefly你说的这个[color=red]:[color=orange]Java里面的ArrayList不仅是运行时指定长度,并且可以自增长。因此,说白了,ArrayList就是lz所说的“动态数组”。因此,lz直接使用ArrayList就可以,当然,也可以把ArrayList封装FieldCollection,然后在FieldCollection里面添加相应的add和delete方法。[/color][/color]
你能不能用代码实现啊!我不知如何下手!
[b]问题补充:[/b]
好!你就ok了!多谢二位的回答!

9个回答

看看这样行不行:
Package.java
[code="java"]
import java.util.ArrayList;
import java.util.List;
public class Package{
String name;
String type;
String operation;
List fields = new ArrayList();

public String getName(){
return name;
}

public void setName( String name ){
this.name = name;
}

public String getOperation(){
return operation;
}

public void setOperation( String operation ){
this.operation = operation;
}

public String getType(){
return type;
}

public void setType( String type ){
this.type = type;
}

public void add( Field field ){
this.add( field );
}

public void delete( Field field ){
this.delete( field );
}
}

[/code]

Field.java
[code="java"]
public class Field{
String name;
String type;
String operations;
public String getName(){
return name;
}
public void setName( String name ){
this.name = name;
}
public String getOperations(){
return operations;
}
public void setOperations( String operations ){
this.operations = operations;
}
public String getType(){
return type;
}
public void setType( String type ){
this.type = type;
}
}

[/code]

Package(属性:name、type、operation等等。方法包括:add,delete,

其中的add delete 是什么作用

Package(属性:name、type、operation等等。方法包括:add,delete,以及对Field字段的添加、删除等功能方法)

add,delete,以及对Field字段的添加、删除等功能方法

这么 说 不是有四个方法么

Java里面用ArrayList来代替动态数组,Package里面包含一个ArrayList,ArrayList里面再动态的添加Field对象。Package的添加和删除方法只要操纵这个ArrayList就可以了。
lz想要的是这个不?

Sorry,没更新,一下出来这么多 :D :x

C里面的动态数组是指可以运行时指定长度的数组吧。
Java里面的ArrayList不仅是运行时指定长度,并且可以自增长。因此,说白了,ArrayList就是lz所说的“动态数组”。因此,lz直接使用ArrayList就可以,当然,也可以把ArrayList封装成FieldCollection,然后在FieldCollection里面添加相应的add和delete方法,这根据具体情况来决定。
至于lz所说的HashTable,如果要根据键值对来添加或删除的话,也可以用它来替代ArrayList,不过最好是使用HashMap。

代码的话,pansonphy的就可以。不过,里面有个小问题,就是add和delete方法写错了,写成死循环了。
应该是:
[code="java"]
public void add( Field field ){

this.fields.add( field );

}

public void delete( Field field ){

this.fields.remove( field );
}
[/code]
需要说明的是,delete方法实际中有可能要复杂一些,删除规则要根据业务来定。上面仅仅是最简单的情况。

呵呵 不好意思 写得太匆忙了

8) 大体上就是像pansonphy所写的那样,没别的了。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!