解决方案 »

  1.   

     ITEM_MAP只有两个值,你传了三个值
      

  2.   

    ITEM_MAP.put(book.id, book);改成ITEM_MAP.put(book.id, book.tostring);
      

  3.   

    ITEM_MAP只有两个值,你传了三个值 什么意思  怎么改
      

  4.   

    ITEM_MAP只有两个值,你传了三个值 这是书上的例子   我原封不动的copy的   还有
    BookContent.Book book;
    book = BookContent.ITEM_MAP.get(getArguments().getInt(ITEM_ID));
    第二句提示Type mismatch: cannot convert from String to BookContent.Book  我也是醉了
      

  5.   

    ITEM_MAP.put(book.id, book);改成ITEM_MAP.put(book.id, book.tostring); toString()不是自动调用的么  为什么还要显式的写出来
      

  6.   

    也就是system.out.println可以不加,因为有单独的object作为参数的方法。
    map不识别。
      

  7.   

    toString并不是自己调用的,是你设计的让他自己调用……
    先给个自动调用的例子,例如:
    System.out.println();这个可以自动调用,但是他是定好的。
    可以看源码:(当然还有很多基础类型的重载)    public void println(Object o) {
            println(String.valueOf(o));
        }可见,对象类型之所以会自动打印,是他转为了字符串形势,然后就调用了toString方法1、而你的代码自定义的Book类型仅仅是给map添加而已,map里没有自动转为String类型的设计。所以也就无法调用toString
    要自己手动写出来
    2、其次,如果可以自动输出toString会有歧义
    ITEM_MAP.put(book.id, book);这里book到底是要加入对象,还是加入toString的结果?
    系统怎么知道?总之人为的加入toString是个好习惯!不要总期待自动实现。而且手动加入,给其他人的阅读性也会更好
      

  8.   

    你输出一个对象的toString()应该包含类里面的属性的值,简单改了一下,请用jdk1.8运行.另外你也可以给每个属性设置一个set/get
    import java.util.*;/**
     * Java 8.
     *
     *
     *
     * Created by prd on 2015/2/8.
     */
    public class BookContent {
        public static class Book{        public Integer id;
            public String title;
            public String desc;
            public Book(Integer id,String title,String desc){
                this.id = id;
                this.title = title;
                this.desc = desc;
            }
            @Override
            public String toString() {
                return new StringJoiner(",","[","]").add(this.id.toString()).add(this.title).add(this.desc).toString();
            }
            
            public String getTitle(){
                return this.title;
            }
            public Integer getId() {
                return id;
            }        public void setId(Integer id) {
                this.id = id;
            }        public void setTitle(String title) {
                this.title = title;
            }        public String getDesc() {
                return desc;
            }        public void setDesc(String desc) {
                this.desc = desc;
            }    }    public static List<Book> ITEMS = new ArrayList<Book>();
        public static Map<Integer,String> ITEM_MAP = new HashMap<Integer,String>();    public static void addItem(Book book){
            ITEMS.add(book);
            ITEM_MAP.put(book.id, book.getTitle());
        }    public static void main(String[] args) {
            addItem(new Book(1,"疯狂java讲义","一本全面深入的java学习图书,已被多家高校选做教材"));
            addItem(new Book(2,"疯狂android讲义","android学习者的首选图书,常年占据京东、当当、AMAZON3大网站的榜首"));
            addItem(new Book(3,"轻量级JAVAEE企业应用实战","全面介绍JAVA EE的开发框架"));
            System.out.println("--------------LIST-输出对象-----------------");
            ITEMS.forEach(System.out::println);
            System.out.println("--------------MAP--只输出名字--------------------");
            ITEM_MAP.forEach((key,value)-> System.out.println("key:"+key+",value:"+value));
        }
    }
      

  9.   

    忘了这是android版,下面是一个jdk 1.7的版本去掉[-- java 8]这个就可以是java8运行了
    import java.util.*;/**
     * Java 8.
     *
     *
     *
     * Created by prd on 2015/2/8.
     */
    public class BookContent {
        public static class Book{        public Integer id;
            public String title;
            public String desc;
            public Book(Integer id,String title,String desc){
                this.id = id;
                this.title = title;
                this.desc = desc;
            }
            @Override
            public String toString() {
                return "["+this.id.toString()+","+this.title+","+this.desc+"]";
                // [-- java 8] return new StringJoiner(",","[","]").add(this.id.toString()).add(this.title).add(this.desc).toString();
            }        public String getTitle(){
                return this.title;
            }
            public Integer getId() {
                return id;
            }        public void setId(Integer id) {
                this.id = id;
            }        public void setTitle(String title) {
                this.title = title;
            }        public String getDesc() {
                return desc;
            }        public void setDesc(String desc) {
                this.desc = desc;
            }    }    public static List<Book> ITEMS = new ArrayList<Book>();
        public static Map<Integer,String> ITEM_MAP = new HashMap<Integer,String>();    public static void addItem(Book book){
            ITEMS.add(book);
            ITEM_MAP.put(book.id, book.getTitle());
        }    public static void main(String[] args) {
            addItem(new Book(1,"疯狂java讲义","一本全面深入的java学习图书,已被多家高校选做教材"));
            addItem(new Book(2,"疯狂android讲义","android学习者的首选图书,常年占据京东、当当、AMAZON3大网站的榜首"));
            addItem(new Book(3,"轻量级JAVAEE企业应用实战","全面介绍JAVA EE的开发框架"));
            System.out.println("--------------LIST-输出对象-----------------");
            //[-- java 8] ITEMS.forEach(System.out::println);
            for (int i = 0; i < ITEMS.size(); i++) {
                System.out.println(ITEMS.get(i));
            }
            System.out.println("--------------MAP--只输出名字--------------------");
            //[-- java 8] ITEM_MAP.forEach((key,value)-> System.out.println("key:"+key+",value:"+value));
            for (Map.Entry<Integer,String> m : ITEM_MAP.entrySet()) {
                System.out.println("key:"+m.getKey()+",value:"+m.getValue());
            }
        }
    }
      

  10.   

    The method put(Integer, String) in the type Map<Integer,String> is not applicable for the arguments (Integer, BookContent.Book)
    定义类型和保存类型不匹配。
    Book重写tostring方法,改BookContent.Book.toString();