2 qq 31930741 qq_31930741 于 2016.04.09 23:08 提问

JavaTreeMap的问题,麻烦帮忙看看,谢谢了

//创建book对象
//Book2 book=new Book2();
//创建TreeMap对象
TreeMap tm=new TreeMap();
tm.put(new Book2("1896-09-01","平方的世界"),"1001");
tm.put(new Book2("2012-12-01","白说"),"1002");
tm.put(new Book2("2014-09-01","创业维艰"),"1003");
//获取迭代器
Set> set=tm.entrySet();
Iterator it=set.iterator();
while(it.hasNext()){
System.out.println(it.next());
}

    为什么只添加了一个键值,其他的都没有添加进去,求解,谢谢了

4个回答

caozhy
caozhy   Ds   Rxr 2016.04.09 23:16

Book2怎么实现的,其中hashCode和equals有没有重写。是否将不同的书名、日期视作不同的书?

qq_31930741
qq_31930741 但是现在我已经知道怎么将//核心代码 /*String date1="2016-03-15"; String date2="1992-06-12"; SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); sdf.parse(date1); sdf.parse(date2); System.out.println(date1.compareToIgnoreCase(date2));*/ 这里面两个日期进行比较了,就是不知道怎么将这个TreeMap的键里面的日期进行比较排序
一年多之前 回复
qq_31930741
qq_31930741 需求:定义一个TreeMap,键用来存储的是书对象,值存储的是字符串。根据书的出版日期排序。 class Book{ String date; String name; }我这个问题是这样的
一年多之前 回复
qq_31930741
qq_31930741 Book2是前面定义的类,TreeMap不是与hashCode、equals无关吗?
一年多之前 回复
caozhy
caozhy   Ds   Rxr 2016.04.09 23:32
 /* package whatever; // don't place package name! */

import java.util.*;
import java.lang.*;
import java.io.*;
class Book2 implements Comparable
{ 
    public String date; public String name; 
    public Book2(String s1, String s2)
    {
        name = s1;
        date = s2;
    }
    public int compareTo(Object o) 
    {
        Book2 b = (Book2)o;
        return name.compareTo(b.name);
    }
    public String toString()
    {
        return name + "\t" + date;
    }
}
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
    public static void main (String[] args) throws java.lang.Exception
    {
        //创建book对象
        //Book2 book=new Book2();
        //创建TreeMap对象
        TreeMap<Book2,String> tm=new TreeMap<Book2,String>();
        tm.put(new Book2("1896-09-01","平方的世界"),"1001");
        tm.put(new Book2("2012-12-01","白说"),"1002");
        tm.put(new Book2("2014-09-01","创业维艰"),"1003");
        //获取迭代器
        Set<Map.Entry<Book2,String>> set=tm.entrySet();
        Iterator it=set.iterator();
        while(it.hasNext()){
            System.out.println(it.next());
        }
    }
}
caozhy
caozhy   Ds   Rxr 2016.04.09 23:32

1896-09-01 平方的世界=1001
2012-12-01 白说=1002
2014-09-01 创业维艰=1003

都添加了,都输出了,没问题

qq_31930741
qq_31930741 回复caozhy: 题目是这样的:需求:定义一个TreeMap,键用来存储的是书对象,值存储的是字符串。根据书的出版日期排序。 class Book{ String date; String name; } 都想了一晚上了,快疯了
一年多之前 回复
qq_31930741
qq_31930741 改不了啊,一改就报错,麻烦你写下代码。谢谢
一年多之前 回复
caozhy
caozhy 回复从容_: 那你需要把date定义成DateTime型,而不是String
一年多之前 回复
qq_31930741
qq_31930741 回复caozhy: 麻烦了
一年多之前 回复
qq_31930741
qq_31930741 回复caozhy:但我们老师要我们用这个方法SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
一年多之前 回复
caozhy
caozhy 回复从容_: return name.compareTo(b.name);修改为return date.compareTo(b.date);
一年多之前 回复
qq_31930741
qq_31930741 恩 谢谢啊 能不能再告诉我一下怎么让时间排序 /*String date1="2016-03-15"; String date2="1992-06-12"; SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); sdf.parse(date1); sdf.parse(date2); System.out.println(date1.compareToIgnoreCase(date2));*/这串代码我知道怎么打,就是不知道在TreeMap中怎么让日期进行排序,麻烦了
一年多之前 回复
CSDNXIAOD
CSDNXIAOD   2016.04.09 23:12

代码问题,大家来帮忙看看啊
Repeater问题。知道的麻烦帮忙解决下
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!