Java Treemap是如何工作的?
因此,我试图从excel文件中读取数据,并使用Treemap读取该文件。但问题是treemap将我的数据随机放入它的列表中。不过,我在使用它时设置了一个索引Java Treemap是如何工作的?,java,excel,treemap,Java,Excel,Treemap,因此,我试图从excel文件中读取数据,并使用Treemap读取该文件。但问题是treemap将我的数据随机放入它的列表中。不过,我在使用它时设置了一个索引 //This writes the data from an old file //writer is my treemap //sReadData is a List with the old data for (int i = 0; i < (sReadData.size()+1)/5; i++) {
//This writes the data from an old file
//writer is my treemap
//sReadData is a List with the old data
for (int i = 0; i < (sReadData.size()+1)/5; i++) {
writer.put(String.valueOf(i),new Object[] { sReadData.get(i*5),sReadData.get(i*5+1),sReadData.get(i*5+2),sReadData.get(i*5+3),sReadData.get(i*5+4)});
}
writer.put(String.valueOf(iCounter +1), new Object[] { "Name", "Date","Time", "Type","Owner"});
//This writes the new data
for (int i = 0; i < sName.length; i++) {
//iCounter is just the number of rows from the old file|These are just some Array with some data
writer.put(String.valueOf(iCounter+2+i), new Object[] { sName[i], sDate[i],sTime[i], sTypes[i],sOwners[i]});
}
//这将从旧文件写入数据
//作家是我的树地图
//sReadData是包含旧数据的列表
对于(int i=0;i<(sReadData.size()+1)/5;i++){
writer.put(String.valueOf(i),新对象[]{sReadData.get(i*5),sReadData.get(i*5+1),sReadData.get(i*5+2),sReadData.get(i*5+3),sReadData.get(i*5+4)});
}
writer.put(String.valueOf(iCounter+1),新对象[]{“Name”、“Date”、“Time”、“Type”、“Owner”});
//这将写入新数据
for(int i=0;i
我的错误是我把树映射初始化错了。它应该是这样的:Map tMap=newtreemap() 顺序不会是随机的。但这可能不是你所期望的。字符串按词汇顺序排列,因此“1”<“10”<“100”<…<"11" ... < “2” 如果希望以数字顺序返回
TreeMap
条目,请使用Integer
作为键类型
当我尝试使用
int
而不是String
时,出现以下错误:
The method put(String, Object[]) in the type Map<String,Object[]>
is not applicable for the arguments (int, Object[])
方法将(字符串,对象[])放入类型映射中
不适用于参数(int,对象[])
您还需要将映射的声明更改为
TreeMap
是否确实需要字符串
键,其中可以有整数
或长
键?TreeMap
是一个按键自动排序的SortableMap
,String
s以不同方式排序。。。顺便问一下,编写器的初始化看起来如何?这个名称对于一个无论如何都不写任何东西的数据结构来说是不好的。使用writer
作为Map
的变量名是违反直觉的。Map writer=new TreeMap();这就是我初始化它的方式,当我尝试使用int时,我会得到一个错误,我会更改变量的名称。TreeMap
是按键排序的,字符串是按字典排序的,例如,“10”
是在“2”
之前排序的,所以这就是映射所做的,与它应该做的完全一样。问题是地图不应该由字符串值设置关键帧,而应该由数字设置,因此10
在2
之后排序。