Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Treemap是如何工作的?_Java_Excel_Treemap - Fatal编程技术网

Java 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++) {

因此,我试图从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++) {
                
     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
之后排序。