-2

オブジェクトに問題があります。実際には、オブジェクトを別のオブジェクトに変換する必要があります。ここで私の Category オブジェクトには、カテゴリ (サブカテゴリ) のリストが含まれています。このコードの主な問題は、すべてのサブカテゴリ (Category オブジェクト) を CatgoryUI に変換する必要があることです。

   import java.util.ArrayList;
import java.util.List;

public class TestMain {

    /**
     * @param args
     */
    public static void main(String[] args) {
        System.out.println("In main");
        TestMain tm = new TestMain();
        List<Category> categories= tm.prepareList();
        tm.displayCategories(categories);
        List<CategoryUI> categoryList = tm.convertCategories(categories);
        System.out.println("------Converted------");
        tm.displayConvertedCategories(categoryList);
    }

    private List<Category> prepareList(){
        //Category category = new Category();
        List<Category> level3List1 = new ArrayList<Category>();

        level3List1.add(new Category(4L, "Sentence Equalence", new ArrayList<Category>()));
        level3List1.add(new Category(5L, "Antonyms", new ArrayList<Category>()));
        level3List1.add(new Category(6L, "Text Completion", new ArrayList<Category>()));

        List<Category> level3List2 = new ArrayList<Category>();
        level3List2.add(new Category(7L, "Problem Solving", new ArrayList<Category>()));
        level3List2.add(new Category(8L, "Logical Reasoning", new ArrayList<Category>()));

        List<Category> level2List = new ArrayList<Category>();
        level2List.add(new Category(2L, "Verbal", level3List1));
        level2List.add(new Category(3L, "Quantative", level3List2));

        List<Category> level1List = new ArrayList<Category>();
        level1List.add(new Category(1L, "GRE", level2List));

        return level1List;

    }

    private void displayCategories(List<Category> categories){
        System.out.println("<ul>");
        for(Category category : categories){
            System.out.println("<li>");
            System.out.println(category.getName());
            System.out.println("</li>");
            if(category.getSubCategory().size()>0){
                displayCategories(category.getSubCategory());
            }
        }
        System.out.println("</ul>");
    }
}

package net.sankhya.debug;

import java.util.List;

public class Category {

    private Long id;
    private String name;
    private List<Category> subCategory;



    public Category(Long id, String name, List<Category> subCategory) {
        super();
        this.id = id;
        this.name = name;
        this.subCategory = subCategory;
    }
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public List<Category> getSubCategory() {
        return subCategory;
    }
    public void setSubCategory(List<Category> subCategory) {
        this.subCategory = subCategory;
    }
}

package net.sankhya.debug;

import java.util.List;

public class CategoryUI {

    private Long id;
    private String name;
    private List<CategoryUI> subCategory;

    public CategoryUI(){

    }

    public CategoryUI(Long id, String name, List<CategoryUI> subCategory) {
        super();
        this.id = id;
        this.name = name;
        this.subCategory = subCategory;
    }
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public List<CategoryUI> getSubCategory() {
        return subCategory;
    }
    public void setSubCategory(List<CategoryUI> subCategory) {
        this.subCategory = subCategory;
    }
}

html ビューで in ul と li を使用してカテゴリ一覧を表示すると、以下のように表示されます。また、リストを印刷する場合は、CategoryUI オブジェクトに変換した後、これも同じように再生する必要があります。だから、CategoryをCategoryUIに変換する方法について何か提案をしてください。

<ul>
<li>GRE</li>
<ul>
    <li>Verbal</li>
    <ul>
        <li>Sentence Equalence</li>
        <li>Antonyms</li>
        <li>Text Completion</li>
    </ul>
    <li>Quantative</li>
    <ul>
        <li>Problem Solving</li>
        <li>Logical Reasoning</li>
    </ul>
</ul>

ありがとう

4

2 に答える 2

1

このような独自の変換メソッドを作成します...

public List<CategoryUI> convertArray(List<Category> categoryArray){
    List<CategoryUI> convertedArray = new ArrayList<CategoryUI>();

    for (int i=0;i<categoryArray.size();i++){
        convertedArray.add(convertObject(categoryArray.get(i)));
    }

    return convertedArray;
}


public CategoryUI convertObject(Category category){
    return new CategoryUI(category.getId(),category.getName(),convertArray(category.getSubCategory()));
}

convertObject(category)変換したいオブジェクトごとに呼び出すだけです。適切なタイプの新しいオブジェクトを効果的に作成し、古いオブジェクトのすべてのデータを入力します。また、subCategories の配列も変換します。ツリーの最上位ノードを渡すと、1 回の呼び出しでツリーのすべてのサブカテゴリが処理され、それらすべてが変換されるため、シンプルで便利です。

于 2013-06-28T07:38:37.660 に答える
1

アプリケーションでより頻繁に行う必要がある場合は、ドーザーを検討することもできます。ドーザーは自動的にマッピングを実行します。

于 2013-06-28T07:45:57.823 に答える