将ArrayList转换为LinkedList



如果我想把这个实现从ArrayList更改为LinkedList,我只需要更改

ArrayList<Character> characters = new ArrayList<Character>();

LinkedList<Character> characters = new List<Character>();

我该怎么做呢?

ArrayList<Character> characters = new ArrayList<Character>();
try {
    while((str = bufferedReader.readLine()) != null){
        char [] characterArray = str.toCharArray();
        for (int i = 0; i <  characterArray.length; i++){
            characters.add(characterArray[i]);
        }
    }
} catch (IOException e) {
    e.printStackTrace();
}
char [] patternArray = phrase.toCharArray();
ArrayList<Character> pattern = new ArrayList<Character>();
for (int i = 0; i <  patternArray.length; i++) {
    pattern.add(patternArray[i]);
}

这段代码很好地说明了为什么面向接口编程是一件好事。你继续使用这个声明模式:

ArrayList<Character> characters = new ArrayList<Character>();

如果您希望使characters成为链表,您必须在两个地方进行更改。如果您使用接口名称作为声明,如

List<Character> characters = new ArrayList<Character>();

代码的其余部分将继续工作,但是您将能够进行单个更改以转换为LinkedList:

List<Character> characters = new LinkedList<Character>();

同样适用于pattern变量的声明。

速度太慢,占用太多内存

当然有!长链表占用更多内存,因此将它们用于逐字符表示是不切实际的。通常,只有在处理少量短字符串时,将字符串转换为字符列表才实用。在其他情况下,最好使用String对象,如果需要可变性,则使用StringBuilder对象。

相关内容

  • 没有找到相关文章

最新更新