为了账号安全,请及时绑定邮箱和手机立即绑定

包含对象列表的多个列表

包含对象列表的多个列表

慕桂英546537 2023-09-20 16:39:50
我有 2 个清单。每个列表由其中的对象组成,即对象列表。List<Book> listBook= new List<Book>();List<Pen> listPen = new List<Pen>();class Book {    string name;    int id;    Book() {        this.name = name;        this.id = id;    }}class Pen {    string name;    int id;    Pen() {        this.name = name;        this.id = id;    }}listBook其中有 10 个对象,同样也listPen有 10 个对象。我需要一个add方法,通过传递列表对象或带有详细信息的列表的引用,列表必须更新。我的意思是,单一方法,使用 list-pen 或 list-book 调用该方法应该分别向 list-pen 或 list-book 添加新对象。感谢您的任何建议或帮助
查看完整描述

3 回答

?
BIG阳

TA贡献1859条经验 获得超6个赞

您可以为此使用泛型。下面的addToList方法是一个通用方法,它接受任何类型的列表和对象来添加它。


public static <T> void addToList(final List<T> list, final T toAdd) {


    list.add(toAdd);

  }


  public static void main(final String[] args) {

    final List<Book> listBook = new ArrayList<Book>();

    final List<Pen> listPen = new ArrayList<Pen>();


    addToList(listPen, new Pen());

    addToList(listBook, new Book());

  }

注意(不可能):在您的代码中,您创建了 的对象List,而 List 是一个接口,因此您无法创建 List 的对象。相反,它应该是ArrayList().


查看完整回答
反对 回复 2023-09-20
?
慕标琳琳

TA贡献1830条经验 获得超9个赞

如果您只寻找一种方法(即 Add()),这里是完整的代码。


using System.Collections.Generic;

using System.Linq;

using System.Text.RegularExpressions;



namespace Rextester

{


    public class Book

    {

        public string name;

        public int id;

        public Book(string name, int id)

        {

            this.name = name;

            this.id = id;

        }

    }


    public class Pen

    {

        public string name;

        public int id;

        public Pen(string name, int id)

        {

            this.name = name;

            this.id = id;

        }

    }

    public class Program

    {

        static List<Book> listBook = new List<Book>();

        static List<Pen> listPen = new List<Pen>();

        public static void Main(string[] args)

        {



            listBook.Add(new Book

            (

                 "Book1",

             1

            ));

            listBook.Add(new Book

        ("Book2",

              2

            ));




            listPen.Add(new Pen

        ("Pen1",

                 1

            ));

            listPen.Add(new Pen("Pen2", 2));




            //Testing with new book list


            List<Book> newListBook = new List<Book>();

            newListBook.Add(new Book

            ("Book3",

                  3

            ));

            newListBook.Add(new Book

            ("Book4",

                  4

            ));


            Add(newListBook);


            foreach (var item in listBook)

            {

                Console.WriteLine(item.name);


            }



            List<Pen> newListPen = new List<Pen>();

            newListPen.Add(new Pen

            ("Pen3",

                  3

            ));

            newListPen.Add(new Pen

            ("Pen4",

                  4

            ));


            Add(newListPen);


            foreach (var item in listPen)

            {

                Console.WriteLine(item.name);


            }


            Console.ReadLine();

        }


        public static void Add<T>(IEnumerable<T> obj)

        {

            foreach (var item in obj)

            {

                if (item is Book)

                {

                    listBook.Add(item as Book);


                }

                if (item is Pen)

                {

                    listPen.Add(item as Pen);


                }


            }

        }

    }

}


查看完整回答
反对 回复 2023-09-20
?
跃然一笑

TA贡献1826条经验 获得超6个赞

不确定我是否正确理解你的问题,所以我会根据你使用 C# 的假设提出一些解决方案:


情况1:如果你只是想向列表中添加一个项目,那么就使用Ling。


using System.Linq;


List<Book> books = new List<Book>();

Book myBook = new Book();

books.Add(myBook);

情况2:如果你想创建一个适用于任何数据类型的方法,那么编写一个模板


public void MyAddMethod<T>(ref List<T> list, T item)

{

    list.Add(item);

}


List<Book> book = new List<Book>();

Book myBook = new Book();

MyAddMethod(ref books, myBook);

这是我最好的选择。希望这可以帮助。


查看完整回答
反对 回复 2023-09-20
  • 3 回答
  • 0 关注
  • 92 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信