字符串是Substring,因为ArrayList是?

时间:2014-05-12 00:39:45

标签: java arraylist substring java-api

在Java和许多其他语言中,人们可以通过说String.substring(begin, end)之类的内容来获取字符串的子部分。我的问题是,是否存在内置功能,可以使用Java中的列表执行相同的操作,从而返回原始子列表?

5 个答案:

答案 0 :(得分:6)

此方法称为subListexists for both array and linked lists。请注意,它返回的列表由现有列表支持,因此更新原始列表将更新切片。

答案 1 :(得分:1)

答案可以在List API中找到:List#subList(int, int)(无法弄清楚如何让链接正常工作......)

但请注意,这是基础列表的视图,因此如果更改原始列表,则会更改子列表,并且子列表的语义未定义如果您在结构上修改原始列表。所以我认为它并不严格意味着你正在寻找......

如果你想要一个结构独立的小组,我相信你必须做的事情如下:

ArrayList<something> copy = new ArrayList<>(oldList.subsection(begin, end));

但是,这将保留对子列表中原始对象的引用。如果您想要一个全新的列表,您可能必须手动克隆所有内容。

答案 2 :(得分:0)

该方法名为子列表,可以在javadocs中找到

http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#subList(int,int)

答案 3 :(得分:0)

您可以使用subList(start, end)

ArrayList<String> arrl = new ArrayList<String>();
//adding elements to the end
arrl.add("First");
arrl.add("Second");
arrl.add("Third");
arrl.add("Random");
arrl.add("Click");
System.out.println("Actual ArrayList:"+arrl);
List<String> list = arrl.subList(2, 4);
System.out.println("Sub List: "+list);

输出

Actual ArrayList:[First, Second, Third, Random, Click]
Sub List: [Third, Random]

答案 4 :(得分:0)

如果您希望新方法与String的子字符串完全一样,则可能只想创建一个新方法。

public static List<String> sub(List<String> strs, int start, int end) {
    List<String> ret = new ArrayList<>(); //Make a new empty ArrayList with String values
    for (int i = start; i < end; i++) { //From start inclusive to end exclusive
        ret.add(strs.get(i)); //Append the value of strs at the current index to the end of ret 
    }
    return ret;
}

public static List<String> sub(List<String> strs, int start) {
    List<String> ret = new ArrayList<>(); //Make a new empty ArrayList with String values
    for (int i = start; i < strs.size(); i++) { //From start inclusive to the end of strs
        ret.add(strs.get(i)); //Append the value of strs at the current index to the end of ret 
    }
    return ret;
}    

如果myStrings是以下ArrayList中的Strings{"do","you","really","think","I","am","addicted","to","coding"},则sub(myStrings,1,6)将返回{"you", "really", "think", "I", "am"}sub(myStrings,4)将返回{"I", "am", "addicted", "to", "coding"}。同样,通过执行sub(myStrings, 0),它会将myStrings重写为新的ArrayList,有助于解决问题。