Java中使用new关键字实例化对象--解释代码 List<String> list = new LinkedList<>()

本文主要解释这段代码的含义,可以加深uu们对这段代码的理解。

List<String> list = new LinkedList<>();
这段代码的作用是创建一个空的链表(LinkedList),并将其赋值给一个类型为List<String>的变量。下面从几个方面详细分析:


1. 数据类型与变量声明


List<String>:这是一个接口类型,使用了泛型String,表示该列表只能存储字符串元素。
list:变量名,用于引用后续创建的链表对象。


2. 对象创建


new LinkedList<>():
new:关键字,用于在内存中实例化一个对象。
LinkedList<>:具体的实现类,这里使用了 Java 的双向链表结构。
<?>:泛型的类型推断(Java 7 + 特性),编译器会根据左侧的List<String>自动推断为String类型。


3. 多态的应用


接口引用指向实现类对象:List是接口,LinkedList是其实现类。这种写法遵循面向接口编程的原则,使得代码更灵活(例如后续可轻松替换为ArrayList等其他实现)。

为什么用 List 声明而非 LinkedList?
面向接口编程:通过接口类型(List)声明变量,而非具体实现类(LinkedList),提高了代码的灵活性。后续如需更换实现(如改为 ArrayList),只需修改右侧的实例化部分,而无需改动其他代码。

示例:

List<String> list = new ArrayList<>(); // 轻松切换实现

3. LinkedList 的特点


优点:

--插入/删除元素效率高(时间复杂度 O(1))。

--实现了 Deque 接口,可作为队列或双端队列使用。

缺点:

--随机访问性能较差(时间复杂度 O(n))。

4. 适用场景


需要频繁在列表中间增删元素时(如实现队列、栈等数据结构)。

不需要频繁按索引访问元素的情况

5.示例

// 添加元素
list.add("cherry");        // 尾部添加
list.add(1, "date");       // 指定位置插入

// 访问元素
String first = list.get(0); // 获取第一个元素

// 删除元素
list.remove(0);            // 删除第一个元素

// 遍历元素
for (String fruit : list) {
    System.out.println(fruit);
}

拓展(实例化队列):Queue是一个接口,在实例化时必须实例化LinkedList的对象,因为LinkedList实现了Queue接口

//从队尾入队列

public static void main(String[] args) {
Queue<Integer> q = new LinkedList<>();
q.offer(1);
q.offer(2);
q.offer(3);
q.offer(4);
q.offer(5);
System.out.println(q.size());
System.out.println(q.peek()); //获取队头元素

q.poll();
System.out.println(q.poll());//从队头出队列,并将删除的元素返回

if(q.isEmpty()){
System.out.println("队列空");
}else{
System.out.println(q.size());
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值