如何一次访问splitted String的两个元素?

时间:2014-11-13 20:59:23

标签: java

问题:我有一个字符串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!

        } 

1 个答案:

答案 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    }