问题:我有一个字符串100, 200, boxes
。我想将这个String转换为一个对象,比如说TreeMap<String, List>
,100, 200
作为值列表,boxes
作为键作为键。
结果应该看起来像[100, 200]: "boxes"
。
稍后我想访问值:my_map.get("boxes")[0]
或my_map.get("boxes")[1]
。
我的解决方案:假设我有一个包含3列的文件,我读取数据,将其拆分并迭代每行分割线路。我假设我有[100, 200, "boxes"]
。现在在python中,我可以通过提供一系列索引(例如[0:1]
)来访问我需要的元素。
如何用Java做同样的事情?
for (String line : mydata.split("\n|\r\n")) {
String[] sl = line.split(" |\t");
String[] my_two_elements = sl[0:1]; <-- No way!
}
答案 0 :(得分:1)
您正在寻找Arrays.copyOfRange(array,from,to);
将指定数组的指定范围复制到新数组中。 范围(from)的初始索引必须介于0和0之间 original.length,包括。原始[from]的值被放入 副本的初始元素(除非来自== original.length或 从==到)。原始数组中后续元素的值为 放入副本中的后续元素。最终的指数 范围(to),必须大于或等于,可以是 大于original.length,在这种情况下null放在所有 索引大于或等于的副本的元素 original.length - 来自。返回数组的长度为 - 从
生成的数组与原始数组完全相同 阵列。
请始终参考源代码以获取实施详细信息,并对代码进行分析以确定性能。
3035 public static <T,U> T[] More ...copyOfRange(U[] original, int from, int to, Class<? extends T[]> newType) {
3036 int newLength = to - from;
3037 if (newLength < 0)
3038 throw new IllegalArgumentException(from + " > " + to);
3039 T[] copy = ((Object)newType == (Object)Object[].class)
3040 ? (T[]) new Object[newLength]
3041 : (T[]) Array.newInstance(newType.getComponentType(), newLength);
3042 System.arraycopy(original, from, copy, 0,
3043 Math.min(original.length - from, newLength));
3044 return copy;
3045 }