食品网站app建设方案网络平台销售
目录
List集合(collection接口)
1.1ArrayList定义
1.2方法
2.1集合+泛型定义
2.2方法
3.1LinkedList定义
3.2方法
4.1Vatory定义
4.2方法
5.总结
集合
一个长度可变的容器。
List集合(collection接口)
List是一个有序的集合(也称为序列),底层是数组 自动扩容 初始容量10,它允许存储重复的元素。默认支持存储任意数据类型(引用数据类型,不支持基本数据类型)用户可以精准控制列表中每个元素的插入位置,并且通过索引0访问元素。
1.1ArrayList定义
由于底层是靠数组完成的数据存取,所以查询效率高(根据 index 查询),增删效率低。
1.2方法
package com.hualan.listDemo;
import java.util.ArrayList;
import java.util.List;
public class ArrayListDemo {public static void main(String[] args) {//1.创建集合对象 初始容量是10如果容量不足,扩容原有的1.5倍,如果1.5之后空间仍不足,扩容为所需的最小容量List list = new ArrayList();//2.增加元素 引用数据类型list.add("hello");list.add(12.3);//基本数据类型会自动装箱list.add("郭玉洁");//3.查询数据 根据索引下标 找到指定位置的元素//System.out.println(list.get(0));//4.根据下标更改数据//list.set(0,"你好");//5.获取数据// System.out.println(list.get(0));//6.移除某个元素list.remove(0);//System.out.println(list.get(0));list.remove("郭玉洁");//7.移除全部元素list.removeAll(list);System.out.println(list.size());//有序 新增的顺序和查询顺序保持一致for (int i = 0; i < list.size(); i++) {System.out.println(list.get(i));}//增强for循环(底层使用了迭代器)for(Object o : list){System.out.println(o);}//迭代器Iterator it = list.iterator();while(it.hasNext()){//判断迭代器中是否还有元素Object obj = it.next();//指针下移 获取当前元素System.out.println(obj);
}}
}
2.1集合+泛型定义
规定集合中只能存储一种数据类型,避免运行过程中类型转换导致的异常
2.2方法
package com.hl.listDemo;
import java.util.ArrayList;
import java.util.List;
/*
集合 + 泛型(规定集合中只能存储一种数据类型,避免运行过程中类型转换导致的异常)
*/
public class ArrayListDemo4 {
public static void main(String[] args) {
//泛型 <>
List<Object> list = new ArrayList<>();
list.add("a");
list.add(11);
list.add(new Student());
//要求集合中只能存储特定的数据类型
List<Student> list2 = new ArrayList<>();
list2.add(new Student());
//list2.add("1111");//编译错误
List<Student> list3 = new ArrayList<Student>();
//查询
for(Student stu:list2){
System.out.println(stu.getName());
}
//for object
for(Object obj:list){
Student stu = (Student)obj;
System.out.println(stu.getName());
}
}
}
class Student{
private String name;
public String getName() {
return name;
}
3.1LinkedList定义
linkedList 底层是双向链表
LinkedList 底层为链表 不牵涉初始容量和扩容机制LinkedList 底层是双向链表和队列结构队列 队头 队尾LinkedList 有序,可以重复
3.2方法
package com.hualan.listDemo;
import java.util.LinkedList;
public class LinkedListDemo1 {public static void main(String[] args) {LinkedList list = new LinkedList();list.add("hello");list.add("world");list.add("java1");list.add("java2");//在队头新增list.addFirst("java3");//在队尾新增list.addLast("java4");System.out.println(list);System.out.println(list.contains("java1"));System.out.println(list.indexOf("java1"));//获取第一个元素System.out.println(list.get(0));System.out.println(list.peek());System.out.println(list);//删除第一个元素System.out.println(list.remove(0));System.out.println(list.pop());System.out.println(list);}
}
4.1Vatory定义
Vector 实现类,它和 ArrayList 相似,唯一的区别是, Vector 在多线程环境下是安全的,但访问效率低。
4.2方法
//线程安全 效率低 底层是数组
Vector<String> v = new Vector();
v.add("aaaaaa");
//线程不安全 效率高
List list = new ArrayList();
list.add("aaaaaa");
//创建一个线程安全的ArrayList对象
List list2 = Collections.synchronizedList(new ArrayList());
5.总结
Collection是单值集合,它可以细分为有序(有下标)可重复集合(List),和不可重复集合Set
List是有序可重复集合,有下标的概念,它除了具有Collection全部的功能外,添加了和index相关的方法。
ArrayList实现类,底层数据结构是数组,它的特点是按下标查找元素快,但是插入元素,删除元素效率低,因为需要移动数据。
LinkedList实现类,底层数据结构是双向链表,它的特点是插入、删除元素效率高,根据下标找元素效率低。
Vector实现类,它和ArrayList相似,唯一的区别是,Vector在多线程环境下是安全的,但访问效率低。
增强for循环或者迭代器 边迭代边删除 出现并发修改异常问
解决此问题需要 同步删除 迭代器中元素和list中的元素