Curry_warrior
Curry_warrior
采纳率55.2%
2019-05-04 14:55

Java中怎么让list里的数据根据类别打印出来

10
  • java

图片说明

我们要求做一个图书馆类的程序,我的做法是对象是图书,然后图书馆就是ArrayList,即把图书对象放进ArrayList。现在的问题是有一个要求是要我们根据作者或者category来打印出所有的图书。即如果按照category打印,一个category相同的所有图书打印过后再打印下个类型的图书。求教大佬怎么实现这个功能

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

5条回答

  • h13213824850 java小白的日常bug 2年前
    
    

    public class test {
    @Test
    public void testStream(){
    ArrayList books = new ArrayList<>();
    books.add(new Book("1","1","1"));
    books.add(new Book("2","2","2"));
    books.add(new Book("3","3","3"));
    books.add(new Book("4","4","4"));
    String category = "1";
    books.stream().forEach(book -> {
    if(book.getCategory().equals(category)){
    System.out.println(book);
    }
    });
    }

    }
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    class Book{
    private String title;
    private String category;
    private String auth;
    }

    ```**如果继续打印其他的类型 可以做个类型集合 遍历**

    点赞 1 评论 复制链接分享
  • qq_38167579 农夫丶果园 2年前
            // Book对象 : category 属性 , getter/setter , toString
            bookList.stream().collect(Collectors.groupingBy(Book::getCategory)).forEach((category,books) -> {
                System.out.println("----------" + category + "----------");
                books.forEach(System.out::println);
            });
    
    点赞 评论 复制链接分享
  • lzq199528 lzq199528 2年前

    先建立一个作者集合结构{作者名称:[书]} HashMap
    遍历list,判断作者集合中书否存在此作者,不存在将添加进作者集合。存在将其追加至对应的集合。
    在遍历最终集合输出。
    代码:

    package com.springcloud.demo;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    /**
     * 开发公司:青岛海豚数据技术有限公司
     * 版权:青岛海豚数据技术有限公司
     * <p>
     * test
     *
     * @author 刘志强
     * @created Create Time: 2019/5/5
     */
    public class test {
        public static void main(String[] a) {
            // 创建list集合
            List<Shu> list = new ArrayList<>();
            Shu shu = new Shu("罗贯中","三国演义", "1");
            Shu shu1 = new Shu("吴承恩","西游记", "5");
            Shu shu2 = new Shu("曹雪芹","红楼梦", "1");
            Shu shu3 = new Shu("施耐庵","水浒传", "2");
            Shu shu4 = new Shu("吴承恩","图书1", "3");
            Shu shu5 = new Shu("施耐庵","图书1", "1");
            Shu shu6 = new Shu("罗贯中","图书2", "3");
            Shu shu7 = new Shu("曹雪芹","图书3", "2");
            list.add(shu);
            list.add(shu1);
            list.add(shu2);
            list.add(shu3);
            list.add(shu4);
            list.add(shu5);
            list.add(shu6);
            list.add(shu7);
    
    
            // 创建最终结构集合
            Map<String,List<Shu>> map = new HashMap<>();
            list.forEach(shu8 -> {
                // 设置开关函数 on
                final boolean[] on = {true};
                map.forEach((key,value) -> {
                    if (key.equals(shu8.getAuthor())) {
                        value.add(shu8);
                        on[0] = false;
                    }
                });
                // 如果on[0]还为true 证明map中还不存在此作者, 追加此作者
                if (on[0]) {
                    List<Shu> list1 = new ArrayList<>();
                    list1.add(shu8);
                    map.put(shu8.getAuthor(), list1);
                }
            });
    
            // 遍历map
            map.forEach((key,value) -> {
                value.forEach(shu9 -> {
                    System.out.println(shu9.toString());
                });
            });
    
    
        }
    
    
        static class Shu {
            Shu(String author,String title,String category ) {
                this.author = author;
                this.title = title;
                this.category = category;
            }
    
            private String author;
            private String title;
            private String category;
    
            public String getAuthor() {
                return author;
            }
    
            public void setAuthor(String author) {
                this.author = author;
            }
    
            public String getTitle() {
                return title;
            }
    
            public void setTitle(String title) {
                this.title = title;
            }
    
            public String getCategory() {
                return category;
            }
    
            public void setCategory(String category) {
                this.category = category;
            }
    
            @Override
            public String toString() {
                return "Shu{" +
                        "author='" + author + '\'' +
                        ", title='" + title + '\'' +
                        ", category='" + category + '\'' +
                        '}';
            }
        }
    }
    
    

    运行输出结果如下

    Shu{author='吴承恩', title='西游记', category='5'}
    Shu{author='吴承恩', title='图书1', category='3'}
    Shu{author='罗贯中', title='三国演义', category='1'}
    Shu{author='罗贯中', title='图书2', category='3'}
    Shu{author='曹雪芹', title='红楼梦', category='1'}
    Shu{author='曹雪芹', title='图书3', category='2'}
    Shu{author='施耐庵', title='水浒传', category='2'}
    Shu{author='施耐庵', title='图书1', category='1'}
    
    点赞 评论 复制链接分享
  • qq_22847605 qq_22847605 2年前

    图书类别和图书应该是分为两张表的,即作为两个类。要求的是分别依次打印出一个图书类中的所有的图书。那么,就可先获取所有图书类别和所有图书类的图书数据。再将对所有图书类别进行第一层循环,将所有图书类的图书数据作为第二层循环(进行和第一层循环的类别进行匹配,得出此类的图书数据),最终打印即可

    点赞 评论 复制链接分享
  • blackofsoul blackofsoul 2年前

    大概想法是先建一个书的对像,每本书都通过这个对象new出来,之后建一个图书馆的数据组,把每本书的对象都放到数据组,再将数据组安想要的排序,这里用的是数组自己的排序方法,就是自己实现Comparator就可以了
    class Book{
    String isbn;
    String title;
    String author;
    String category;
    String total_copies;
    String available_copies;

    }

    Public void main(){
    List library = new ArrayList();
    Book book = new Book();
    book.isbn= ’730206…..’;
    book.title = ‘Data Stru…’;
    ………..
    library.add(book);
    Book book1 = new Book();
    book1.isbn= ’730206…..’;
    book1.title = ‘Data Stru…’;
    ………..
    library.add(book1);

    Arrays.sort(library, new MyComprator()); //使用指定的排序器,进行排序
    for(int i=0;i<library.size();I++) //输出排序结果
    System.out.println(library.get(i).isbn +”,”+library.get(i).title………………);
    }

    class MyComprator implements Comparator {
    public int compare(Object arg0, Object arg1) {
    Book t1=(Book)arg0;
    Book t2=(Book)arg1;
    if(t1.cuthor != t2.cuthor)
    return t1.x>t2.x? 1:-1;
    else
    return t1.y>t2.y? 1:-1;
    }
    }

    点赞 评论 复制链接分享

相关推荐