
目录
- package com.jmh.list;
-
- import java.util.ArrayList;
- import java.util.List;
-
- /**
- * list集合的增删改查
- * @author 蒋明辉
- *
- */
- public class Demo01 {
- public static void main(String[] args) {
- //创建一个list集合
- List<String> list=new ArrayList<>();
- //给集合里面增加值
- list.add("zs");
- list.add("li");
- list.add("we");
- list.add("ll");
- list.add("lj");
- //输出
- System.out.println("增加后="+list);
- //修改
- list.set(0, "张三");
- System.out.println("修改后="+list);
- //删除
- String remove = list.remove(1);
- System.out.println("根据下标被删除的内容"+remove);
- System.out.println("删除后="+list);
- }
-
- }
测试如下

- package com.jmh.list;
-
- import java.util.ArrayList;
- import java.util.Iterator;
- import java.util.List;
-
- /**
- * list集合的三种遍历方式
- * @author 蒋明辉
- *
- */
- public class Demo02 {
- public static void main(String[] args) {
- //创建一个list集合
- List<String> list=new ArrayList<>();
- //给集合里面增加值
- list.add("zs");
- list.add("li");
- list.add("we");
- list.add("ll");
- list.add("lj");
- //第一种方式:for循环输出
- for (int i = 0; i < list.size(); i++) {
- System.out.println("使用for循环输出==="+list.get(i));
- }
- //第二种方式:for循环加强方式输出
- for (String str : list) {
- System.out.println("使用for循环加强输出==="+str);
- }
- //第三种方式:Iterator迭代器输出
- Iterator<String> iterator = list.iterator();
- //判断是否有下一个值
- while(iterator.hasNext()) {//代表有就执行下一步
- System.out.println("迭代器输出==="+iterator.next());//输出
- }
- }
- }
测试如下
- package com.jmh.list;
-
- import java.util.LinkedList;
-
- /**
- * Linkedlist
- * 1.Linkedlist和ArrayList的区别
- * linkedlist的底层是链表
- * ArrayList底层是数组
- * 2.堆栈特点:先进后出
- * 3.队列特点:先进先出
- * @author 蒋明辉
- *
- */
- public class Demo03 {
- public static void main(String[] args) {
- //开始测试 队列
- duilie dl=new duilie(new LinkedList<>());
- //调用增加的方法
- dl.push("zs");
- dl.push("ls");
- dl.push("we");
- dl.push("mz");
- //开始取出
- System.out.println("========队列特点:先进先出========");
- System.out.println(dl.pop());
- System.out.println(dl.pop());
- System.out.println(dl.pop());
- System.out.println(dl.pop());
- //开始测试 堆栈
- duizhan dz=new duizhan(new LinkedList<>());
- //调用增加的方法
- dz.push("zs1");
- dz.push("ls1");
- dz.push("we1");
- dz.push("mz1");
- //开始取出
- System.out.println("========堆栈特点:先进后出========");
- System.out.println(dz.pop());
- System.out.println(dz.pop());
- System.out.println(dz.pop());
- System.out.println(dz.pop());
- }
-
-
-
- }
- //创建一个队列类
- class duilie{
- private LinkedList<String> list;
- //增加元素的方法
- public void push(String list) {
- this.list.add(list);
- }
- //移除元素的方法(取出/出去)
- public String pop() {
- return this.list.remove();
- }
-
- public LinkedList<String> getList() {
- return list;
- }
-
- public void setList(LinkedList<String> list) {
- this.list = list;
- }
-
- public duilie(LinkedList<String> list) {
- super();
- this.list = list;
- }
-
- @Override
- public String toString() {
- return "duilie [list=" + list + "]";
- }
- public duilie() {
- }
- }
-
- //创建一个堆栈类
- class duizhan{
- private LinkedList<String> list;
- //增加元素的方法
- public void push(String list) {
- this.list.add(list);
- }
- //移除元素的方法(取出/出去)
- public String pop() {
- return this.list.removeLast();//从最后一个开始取出即可(删除的对象)
- }
-
- public LinkedList<String> getList() {
- return list;
- }
-
- public void setList(LinkedList<String> list) {
- this.list = list;
- }
- public duizhan(LinkedList<String> list) {
- super();
- this.list = list;
- }
- @Override
- public String toString() {
- return "duilie [list=" + list + "]";
- }
- public duizhan() {
- super();
- }
-
- }
测试如下

- package com.jmh.list;
-
- import java.util.ArrayList;
- import java.util.List;
-
- /**
- * List集合重复元素去重
- * 1.底层是是重写eq方法来执行去重元素
- * @author 蒋明辉
- *
- */
- public class Demo04 {
- public static void main(String[] args) {
- //案例一 创建集合 增加五个元素 要求去重并且只输出去重后的元素
- List<String> list=new ArrayList<>();
- //新增一个集合 来保存去重后的元素
- List<String> oldList=new ArrayList<>();
- //开始增加
- list.add("张三");
- list.add("李四");
- list.add("王二");
- list.add("张三");
- System.out.println("去重前"+list);
- //开始去重
- //遍历老集合
- for (String string : list) {
- //判断如果新集合不包含老集合的元素就增加到新集合
- if(!oldList.contains(string)) {
- oldList.add(string);
- }
- }
- System.out.println("去重后"+oldList);
- }
-
- }
测试如下
- package com.jmh.list;
-
- import java.lang.reflect.Field;
- import java.util.ArrayList;
-
- /**
- * List增长因子论证、List集合如何去优化
- * 1.list集合底层是数组
- * 疑惑点:数组的长度是不可变的、可list集合能无限制的添加元素
- * 2.list集合底层数组的初始化容量是10、增长因子是0.5
- * 针对上面的疑惑:数组容量达到上限会进行扩容
- * 3.list集合进行优化、只需要扩大初始化容量、减少扩容的次数、进一步提到性能
- * 有意识的设置初始化容量
- * @author 蒋明辉
- *
- */
- public class Demo05 {
- public static void main(String[] args) throws Exception, SecurityException {
- //创建一个集合
- ArrayList<Integer> arr=new ArrayList<>();
- //循环增加100次
- for (int i = 0; i < 50; i++) {
- arr.add(i);
- getElementDataLength(arr);
- }
- }
-
- private static void getElementDataLength(ArrayList<Integer> arr) throws Exception, SecurityException {
- //拿到List集合属性对象
- Field f = arr.getClass().getDeclaredField("elementData");
- //打开属性的设置权限
- f.setAccessible(true);
- //拿到数组对象
- Object[] ob = (Object[])f.get(arr);
- //测试
- System.out.println("此时容器中的元素个数:"+arr.size()+"此时容器中的元素大小:"+ob.length);
- }
-
- }
测试如下
