List集合

一、List系列集合

1.List集合特点、特有API

1):ArrayList、LinkedList:有序,可重复,有索引
2)List集合特有方法
List集合因为支持索引,所以多了很多索引操作的独特API,其他Collection的功能List也都继承了。
① void add (int indx,E element)
在此集合中的指定位置插入指定元素
② E remove (int index)
删除指定索引处的元素,返向被删除的元素
③E set (int index,E element)
修改指定索引处的元素,返回被修改的元素
④ E get (int index)
返回指定索引处的元素

package d5_collection_list;

import java.util.ArrayList;
import java.util.List;

public class ListDemo1 {

public static void main(String[] args) {
	// TODO Auto-generated method stub
	//1、创建一个ArrayList集合对象
	List<String> list=new ArrayList<>();
	list.add("Java");
	list.add("java");
	list.add("MySQL");
	list.add("MySQL");
	
	//2、在某个索引位置插入元素
	list.add(2, "HTML");
	System.out.println(list);
	
	//3、根据索引删除元素,返回被删除元素
	System.out.println(list.remove(2));
	System.out.println(list);
	
	//4、根据索引获取元素:public E get(int index) 返回集合指定位置的元素
	System.out.println(list.get(2));
	
	//5、修改索引位置处的元素:public E set(int index,E element)
	//返回修改前的数据
	System.out.println(list.set(1, "高斯林"));
	
	list.clear();
	System.out.println(list);
	

}

}

2、List集合的遍历方式小结:

1)遍历方式
①迭代器
②增强for循环
③Lambda 表达式
④for循环(List的集合存在索引)

package d5_collection_list;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class ListDemo2 {

public static void main(String[] args) {
	// TODO Auto-generated method stub
	List<String> list=new ArrayList<>();
	list.add("Java");
	list.add("java");
	list.add("MySQL");
	list.add("MySQL");
	
	//for循环
	for(int i=0;i<list.size();i++) {
		System.out.println(list.get(i));
	}
	
	//迭代器
	System.out.println("-----------------------");
	Iterator<String> it=list.iterator();
	while(it.hasNext()) {
		System.out.println(it.next());
	}
	
	//foreach/增强for循环
	System.out.println("--------------------");
	for(String lists:list) {
		System.out.println(lists);

	//JDK1.8开始之后的Lambda表达式
	System.out.println("-----------------------");
	/st.forEach(e->System.out.println(e));
	list.forEach(e->{
		System.out.println(e);
	});
}
}

}

3、ArrayList集合的底层原理

1)ArrayList底层是基于数组实现的:根据索引定位元素快,增删需要做元素的移位操作
2)第一次创建集合并添加第一个元素的时候,在底层创建一个默认长度为10的数组

4.LinkedList集合的就层原理
1)LinkedList的特点
底层数据结构是双链表,查询慢,首尾操作的速度是极快的,所以多了很多首尾操作的特有API
2)ListedList集合的特有功能
① public void addFirst(E e) 在该列表开头插入指定的元素
②public void addLast(E e)
将指定的元素追加到此列表的尾
③pubic E getFirst()
返回此列表中的第一个元素
④public E getLast() 返回此列表的最后一个元素
⑤ public E remove First()
删除并返回第一个元素
⑥ pubic E removeLast()
删除并返回最后一个元素

package d5_collection_list;

import java.util.LinkedList;

public class ListDemo3 {

public static void main(String[] args) {
	// TODO Auto-generated method stub
	//LinkedList可以完成队列结构,和栈结构(双链表)
	//栈
	LinkedList<String> stack=new LinkedList<>();
	//压栈,入栈
	stack.addFirst("第一颗子弹");
	stack.addFirst("第二颗子弹");
	stack.push("第三颗子弹");
	System.out.println(stack);//[三  二  一]
	//出栈  弹栈
	System.out.println(stack.removeFirst());
	System.out.println(stack.removeFirst());
	System.out.println(stack);
	
	//队列
	LinkedList<String> queue=new LinkedList<>();
	//入队
	queue.addLast("1号");
	queue.addLast("2号");
	queue.offerLast("3号");
	System.out.println(queue);
	//出列
	System.out.println(queue.removeFirst());
	System.out.println(queue.removeFirst());
	System.out.println(queue);
	
	

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值