集合框架之list


                    思维导图
                    ![在这里插入图片描述](https://img-blog.csdnimg.cn/a2417bf9e17447c7a129040da5268869.png#pic_center)

一、starUML的使用

1.首先要下载StarUML Setup 4.0.1.exe ,傻瓜式安装即可,下一步下一步

2.大概样子就长这样,一般在企业用的最频繁的就是这三个

3.看看怎么用的,删除的话直接选中它然后Delete删掉即可

4.导图图片效果,大概就是这样的,背景图可以也更换的。

二、list集合的增删改查

代码块:

package com.jiangwenjuan.list;

import java.util.ArrayList;

/**

  •    对list集合容器的增删改查
    
  • 注意 :做集合元素剔除,不能够在原集合遍历的时候进行操作

  • @author 蒋文娟

  • @date 2022年6月7日 下午6:46:32
    */
    public class Demo1 {

    public static void main(String[] args) {
    ArrayList list = new ArrayList<>();
    //新增
    list.add(“zs”);
    list.add(“ls”);
    list.add(“ww”);
    list.add(“zl”);

     //查询
     System.out.println(list.get(1));
     for (Object obj : list) {
     	System.out.println(obj);
     }
     //修改
     list.set(1, "老六");
     System.out.println("------------------------");
     for (Object obj : list) {
     	System.out.println(obj);
     }
     //删除
     Object obj2 = list.remove(1);//返回的值是删除的元素
     list.remove("ww");//移除对象
     System.out.println(obj2);
     System.out.println("------------------------");
     for (Object obj : list) {
     	System.out.println(obj);
     }
    

    }

}

ls    zs    ls    ww    zl
------------------------
zs    老六    ww    zl    老六
------------------------
zs    zl

面试题:1,4,6,9,11,8 剔除集合中的奇数
currentModifyException:当前改变异常 这样的错说明集合在遍历的时候不能去删除集合,这样的话fore遍历不知道遍历四个还是五个.
企业中,调用第三方接口,要针对与一些数据过滤
结论,做集合元素剔除,不能够在原集合遍历的时候进行操作
这样是错误的:×

	ArrayList<String> list2 = new ArrayList<>();
	list2.add("1");
	list2.add("4");
	list2.add("6");
	list2.add("9");
	list2.add("11");
	list2.add("8");
	for (String obj : list2) {
		if(Integer.valueOf(obj) % 2 == 1) {

// list2.remove(obj);
}
}
这样才是对的:√
ArrayList list2 = new ArrayList<>();
ArrayList list3 = new ArrayList<>();
list2.add(“1”);
list2.add(“4”);
list2.add(“6”);
list2.add(“9”);
list2.add(“11”);
list2.add(“8”);
for (String obj : list2) {
if(Integer.valueOf(obj) % 2 == 1) {
list3.add(obj);
}
}

for (String s : list3) {
System.out.println(s);
}

三、list集合遍历的3中形式

代码块:

package com.jiangwenjuan.list;

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

public class Demo2 {
public static void main(String[] args) {
ArrayList list = new ArrayList<>();
//新增
list.add(“zs”);
list.add(“ls”);
list.add(“ww”);
list.add(“zl”);

	//增强for循环
	for (Object obj : list) {
		System.out.println(obj);
	}
	
	System.out.println("============");
	
	for (int i = 0; i < list.size(); i++) {
		System.out.println(list.get(i));
	}
	
	
	System.out.println("======迭代器======");
	Iterator it = list.iterator();
	System.out.println(it.hasNext());//判断我的集合是否有下一个  ture
	System.out.println(it.next());//直接进入下一个   zs
	
	
	//这样就可以打印出全部的
	while(it.hasNext()) {
		System.out.println(it.next());
	}
	
}

}

zs	ls	ww	zl
=============
zs	ls	ww	zl
======迭代器======
true	zs
-------从迭代器开始吧上面的注释掉
zs	ls	ww	zl

四、Linkedlist实现堆栈及队列

堆栈:相当于一个U这个,一个一个放进去,第一个放zs,ls,ww,老六,在拿出来的时候,就是先拿老六,ww,ls,zs,特点就是:先进后出
队列:相当于一个水管,一个一个放进去,第一个放zs,ls,ww,老六,出来的时候就是,zs,ls,ww,老六,特点就是:先进先出

①、堆栈代码块:

package com.jiangwenjuan.list;

import java.util.LinkedList;

/**

  • 通过Linkedlist实现队列以及堆栈的容器
  • @author 蒋文娟
  • @date 2022年6月7日 下午8:14:43
    */
    public class Demo3 {
    public static void main(String[] args) {
    Duilie duilie = new Duilie(new LinkedList<>());
    duilie.push(“zs”);
    duilie.push(“ls”);
    duilie.push(“ww”);
    duilie.push(“八戒”);
    System.out.println(duilie.pop());
    System.out.println(duilie.pop());
    System.out.println(duilie.pop());
    System.out.println(duilie.pop());
    }

}
class Duilie{
private LinkedList ll;

public Duilie(LinkedList ll) {
	super();
	this.ll = ll;
}

//存
public void push(Object obj) {
	ll.add(obj);
}
//取
public Object pop() {
	return ll.remove();
}

}

②、队列代码块:

package com.jiangwenjuan.list;

import java.util.LinkedList;

/**

  • 通过Linkedlist实现队列以及堆栈的容器
  • @author 蒋文娟
  • @date 2022年6月7日 下午8:14:43
    */
    public class Demo3 {
    public static void main(String[] args) {
    Duizhan duilie = new Duizhan(new LinkedList<>());
    duilie.push(“zs”);
    duilie.push(“ls”);
    duilie.push(“ww”);
    duilie.push(“八戒”);
    System.out.println(duilie.pop());
    System.out.println(duilie.pop());
    System.out.println(duilie.pop());
    System.out.println(duilie.pop());
    }

}
class Duizhan{
private LinkedList ll;

public Duizhan(LinkedList ll) {
	super();
	this.ll = ll;
}

//存
public void push(Object obj) {
	ll.add(obj);
}
//取
public Object pop() {
	return ll.removeLast();
}

}

③、这个两个的区别在于,最后的取,

            堆栈的取就是对象点remove(),
            队列的取就是对象点removeLast();

④、比如这些堆栈和队列在哪里用

    案例:比如淘宝的双十一购物,你下单的那些订单,不会第一时间告诉你不能下单,就是用了堆栈,压了一个请求, 比如:我买了手机,别人买了一个电脑,有一千万订单,那么能在千万怎么能保证每一个的请求得到响应,它真的服务器能够在一秒中处理上一千万单的请求吗?不能,它把你这一千万的请求存储到了堆栈里面,这个容器里面,实力上它是有一个线程池,一个池子,把上千万的订单存到这个池子里面,然后挨个挨个去消费,可以对于上千万的请求,它的请求可能就是0.01秒,一个一个的处理请求,先处理别人的,然后在处理我的,当然前面可能会等待十几秒,最终还是会给你下单,先把它存起来,在进行消费.

五、list集合优化&增长因子

代码块:

package com.jiangwenjuan.list;

import java.lang.reflect.Field;
import java.util.ArrayList;

/**

  • lis集合如何进行优化

  •  当代码中出现了多次add操作,涉及到了list集合容量多次改变,这是十分耗性能的操作,此时通过
    
  • 设定初始化容量,即可优化性能
    *增长因子

  • list集合长度是可变的,数组长度是不可变的

  • 结论1:list集合底层的数据结构是数组

  • 结论2:增长因子 0.5,初始容量 10 每一次超过了之后就乘以0.5

  • @author 蒋文娟

  • @date 2022年6月7日 下午8:43:44
    */
    public class Demo4 {
    public static void main(String[] args) throws Exception {
    // String[] arr = new String[10];
    // arr[11] = “zs”; 越界
    // arr = new String[12];
    // arr[12] = “zs”; //这里给它定义一个初始值的数,这样就可以减少性能
    ArrayList list = new ArrayList<>(100);
    for (int i = 0; i < 200; i++) {
    list.add(i);
    getlen(list);
    }

    }

    private static void getlen(ArrayList list) throws Exception {
    Field f = list.getClass().getDeclaredField(“elementData”);
    f.setAccessible(true);
    Object[] elementData = (Object[]) f.get(list);
    System.out.println(“当前集合的元素个数:”+list.size()+“;当前list集合的容量是:”+elementData.length);
    }

}

当前集合的元素个数:1;当前list集合的容量是:100
当前集合的元素个数:2;当前list集合的容量是:100
当前集合的元素个数:3;当前list集合的容量是:100
当前集合的元素个数:4;当前list集合的容量是:100
当前集合的元素个数:5;当前list集合的容量是:100
当前集合的元素个数:6;当前list集合的容量是:100
当前集合的元素个数:7;当前list集合的容量是:100
当前集合的元素个数:8;当前list集合的容量是:100
当前集合的元素个数:9;当前list集合的容量是:100
当前集合的元素个数:10;当前list集合的容量是:100
当前集合的元素个数:11;当前list集合的容量是:100
当前集合的元素个数:12;当前list集合的容量是:100
当前集合的元素个数:13;当前list集合的容量是:100
当前集合的元素个数:14;当前list集合的容量是:100
当前集合的元素个数:15;当前list集合的容量是:100
当前集合的元素个数:16;当前list集合的容量是:100
当前集合的元素个数:17;当前list集合的容量是:100
当前集合的元素个数:18;当前list集合的容量是:100
当前集合的元素个数:19;当前list集合的容量是:100
当前集合的元素个数:20;当前list集合的容量是:100
当前集合的元素个数:21;当前list集合的容量是:100
当前集合的元素个数:22;当前list集合的容量是:100
当前集合的元素个数:23;当前list集合的容量是:100
当前集合的元素个数:24;当前list集合的容量是:100
当前集合的元素个数:25;当前list集合的容量是:100
当前集合的元素个数:26;当前list集合的容量是:100
当前集合的元素个数:27;当前list集合的容量是:100
当前集合的元素个数:28;当前list集合的容量是:100
当前集合的元素个数:29;当前list集合的容量是:100
当前集合的元素个数:30;当前list集合的容量是:100
当前集合的元素个数:31;当前list集合的容量是:100
当前集合的元素个数:32;当前list集合的容量是:100
当前集合的元素个数:33;当前list集合的容量是:100
当前集合的元素个数:34;当前list集合的容量是:100
当前集合的元素个数:35;当前list集合的容量是:100
当前集合的元素个数:36;当前list集合的容量是:100
当前集合的元素个数:37;当前list集合的容量是:100
当前集合的元素个数:38;当前list集合的容量是:100
当前集合的元素个数:39;当前list集合的容量是:100
当前集合的元素个数:40;当前list集合的容量是:100
当前集合的元素个数:41;当前list集合的容量是:100
当前集合的元素个数:42;当前list集合的容量是:100
当前集合的元素个数:43;当前list集合的容量是:100
当前集合的元素个数:44;当前list集合的容量是:100
当前集合的元素个数:45;当前list集合的容量是:100
当前集合的元素个数:46;当前list集合的容量是:100
当前集合的元素个数:47;当前list集合的容量是:100
当前集合的元素个数:48;当前list集合的容量是:100
当前集合的元素个数:49;当前list集合的容量是:100
当前集合的元素个数:50;当前list集合的容量是:100
当前集合的元素个数:51;当前list集合的容量是:100
当前集合的元素个数:52;当前list集合的容量是:100
当前集合的元素个数:53;当前list集合的容量是:100
当前集合的元素个数:54;当前list集合的容量是:100
当前集合的元素个数:55;当前list集合的容量是:100
当前集合的元素个数:56;当前list集合的容量是:100
当前集合的元素个数:57;当前list集合的容量是:100
当前集合的元素个数:58;当前list集合的容量是:100
当前集合的元素个数:59;当前list集合的容量是:100
当前集合的元素个数:60;当前list集合的容量是:100
当前集合的元素个数:61;当前list集合的容量是:100
当前集合的元素个数:62;当前list集合的容量是:100
当前集合的元素个数:63;当前list集合的容量是:100
当前集合的元素个数:64;当前list集合的容量是:100
当前集合的元素个数:65;当前list集合的容量是:100
当前集合的元素个数:66;当前list集合的容量是:100
当前集合的元素个数:67;当前list集合的容量是:100
当前集合的元素个数:68;当前list集合的容量是:100
当前集合的元素个数:69;当前list集合的容量是:100
当前集合的元素个数:70;当前list集合的容量是:100
当前集合的元素个数:71;当前list集合的容量是:100
当前集合的元素个数:72;当前list集合的容量是:100
当前集合的元素个数:73;当前list集合的容量是:100
当前集合的元素个数:74;当前list集合的容量是:100
当前集合的元素个数:75;当前list集合的容量是:100
当前集合的元素个数:76;当前list集合的容量是:100
当前集合的元素个数:77;当前list集合的容量是:100
当前集合的元素个数:78;当前list集合的容量是:100
当前集合的元素个数:79;当前list集合的容量是:100
当前集合的元素个数:80;当前list集合的容量是:100
当前集合的元素个数:81;当前list集合的容量是:100
当前集合的元素个数:82;当前list集合的容量是:100
当前集合的元素个数:83;当前list集合的容量是:100
当前集合的元素个数:84;当前list集合的容量是:100
当前集合的元素个数:85;当前list集合的容量是:100
当前集合的元素个数:86;当前list集合的容量是:100
当前集合的元素个数:87;当前list集合的容量是:100
当前集合的元素个数:88;当前list集合的容量是:100
当前集合的元素个数:89;当前list集合的容量是:100
当前集合的元素个数:90;当前list集合的容量是:100
当前集合的元素个数:91;当前list集合的容量是:100
当前集合的元素个数:92;当前list集合的容量是:100
当前集合的元素个数:93;当前list集合的容量是:100
当前集合的元素个数:94;当前list集合的容量是:100
当前集合的元素个数:95;当前list集合的容量是:100
当前集合的元素个数:96;当前list集合的容量是:100
当前集合的元素个数:97;当前list集合的容量是:100
当前集合的元素个数:98;当前list集合的容量是:100
当前集合的元素个数:99;当前list集合的容量是:100
当前集合的元素个数:100;当前list集合的容量是:100
当前集合的元素个数:101;当前list集合的容量是:150
当前集合的元素个数:102;当前list集合的容量是:150
当前集合的元素个数:103;当前list集合的容量是:150
当前集合的元素个数:104;当前list集合的容量是:150
当前集合的元素个数:105;当前list集合的容量是:150
当前集合的元素个数:106;当前list集合的容量是:150
当前集合的元素个数:107;当前list集合的容量是:150
当前集合的元素个数:108;当前list集合的容量是:150
当前集合的元素个数:109;当前list集合的容量是:150
当前集合的元素个数:110;当前list集合的容量是:150
当前集合的元素个数:111;当前list集合的容量是:150
当前集合的元素个数:112;当前list集合的容量是:150
当前集合的元素个数:113;当前list集合的容量是:150
当前集合的元素个数:114;当前list集合的容量是:150
当前集合的元素个数:115;当前list集合的容量是:150
当前集合的元素个数:116;当前list集合的容量是:150
当前集合的元素个数:117;当前list集合的容量是:150
当前集合的元素个数:118;当前list集合的容量是:150
当前集合的元素个数:119;当前list集合的容量是:150
当前集合的元素个数:120;当前list集合的容量是:150
当前集合的元素个数:121;当前list集合的容量是:150
当前集合的元素个数:122;当前list集合的容量是:150
当前集合的元素个数:123;当前list集合的容量是:150
当前集合的元素个数:124;当前list集合的容量是:150
当前集合的元素个数:125;当前list集合的容量是:150
当前集合的元素个数:126;当前list集合的容量是:150
当前集合的元素个数:127;当前list集合的容量是:150
当前集合的元素个数:128;当前list集合的容量是:150
当前集合的元素个数:129;当前list集合的容量是:150
当前集合的元素个数:130;当前list集合的容量是:150
当前集合的元素个数:131;当前list集合的容量是:150
当前集合的元素个数:132;当前list集合的容量是:150
当前集合的元素个数:133;当前list集合的容量是:150
当前集合的元素个数:134;当前list集合的容量是:150
当前集合的元素个数:135;当前list集合的容量是:150
当前集合的元素个数:136;当前list集合的容量是:150
当前集合的元素个数:137;当前list集合的容量是:150
当前集合的元素个数:138;当前list集合的容量是:150
当前集合的元素个数:139;当前list集合的容量是:150
当前集合的元素个数:140;当前list集合的容量是:150
当前集合的元素个数:141;当前list集合的容量是:150
当前集合的元素个数:142;当前list集合的容量是:150
当前集合的元素个数:143;当前list集合的容量是:150
当前集合的元素个数:144;当前list集合的容量是:150
当前集合的元素个数:145;当前list集合的容量是:150
当前集合的元素个数:146;当前list集合的容量是:150
当前集合的元素个数:147;当前list集合的容量是:150
当前集合的元素个数:148;当前list集合的容量是:150
当前集合的元素个数:149;当前list集合的容量是:150
当前集合的元素个数:150;当前list集合的容量是:150
当前集合的元素个数:151;当前list集合的容量是:225
当前集合的元素个数:152;当前list集合的容量是:225
当前集合的元素个数:153;当前list集合的容量是:225
当前集合的元素个数:154;当前list集合的容量是:225
当前集合的元素个数:155;当前list集合的容量是:225
当前集合的元素个数:156;当前list集合的容量是:225
当前集合的元素个数:157;当前list集合的容量是:225
当前集合的元素个数:158;当前list集合的容量是:225
当前集合的元素个数:159;当前list集合的容量是:225
当前集合的元素个数:160;当前list集合的容量是:225
当前集合的元素个数:161;当前list集合的容量是:225
当前集合的元素个数:162;当前list集合的容量是:225
当前集合的元素个数:163;当前list集合的容量是:225
当前集合的元素个数:164;当前list集合的容量是:225
当前集合的元素个数:165;当前list集合的容量是:225
当前集合的元素个数:166;当前list集合的容量是:225
当前集合的元素个数:167;当前list集合的容量是:225
当前集合的元素个数:168;当前list集合的容量是:225
当前集合的元素个数:169;当前list集合的容量是:225
当前集合的元素个数:170;当前list集合的容量是:225
当前集合的元素个数:171;当前list集合的容量是:225
当前集合的元素个数:172;当前list集合的容量是:225
当前集合的元素个数:173;当前list集合的容量是:225
当前集合的元素个数:174;当前list集合的容量是:225
当前集合的元素个数:175;当前list集合的容量是:225
当前集合的元素个数:176;当前list集合的容量是:225
当前集合的元素个数:177;当前list集合的容量是:225
当前集合的元素个数:178;当前list集合的容量是:225
当前集合的元素个数:179;当前list集合的容量是:225
当前集合的元素个数:180;当前list集合的容量是:225
当前集合的元素个数:181;当前list集合的容量是:225
当前集合的元素个数:182;当前list集合的容量是:225
当前集合的元素个数:183;当前list集合的容量是:225
当前集合的元素个数:184;当前list集合的容量是:225
当前集合的元素个数:185;当前list集合的容量是:225
当前集合的元素个数:186;当前list集合的容量是:225
当前集合的元素个数:187;当前list集合的容量是:225
当前集合的元素个数:188;当前list集合的容量是:225
当前集合的元素个数:189;当前list集合的容量是:225
当前集合的元素个数:190;当前list集合的容量是:225
当前集合的元素个数:191;当前list集合的容量是:225
当前集合的元素个数:192;当前list集合的容量是:225
当前集合的元素个数:193;当前list集合的容量是:225
当前集合的元素个数:194;当前list集合的容量是:225
当前集合的元素个数:195;当前list集合的容量是:225
当前集合的元素个数:196;当前list集合的容量是:225
当前集合的元素个数:197;当前list集合的容量是:225
当前集合的元素个数:198;当前list集合的容量是:225
当前集合的元素个数:199;当前list集合的容量是:225
当前集合的元素个数:200;当前list集合的容量是:225
如果不默认初始化的话,十分耗性能的操作,结果是这样的:
当前集合的元素个数:1;当前list集合的容量是:10
当前集合的元素个数:2;当前list集合的容量是:10
当前集合的元素个数:3;当前list集合的容量是:10
当前集合的元素个数:4;当前list集合的容量是:10
当前集合的元素个数:5;当前list集合的容量是:10
当前集合的元素个数:6;当前list集合的容量是:10
当前集合的元素个数:7;当前list集合的容量是:10
当前集合的元素个数:8;当前list集合的容量是:10
当前集合的元素个数:9;当前list集合的容量是:10
当前集合的元素个数:10;当前list集合的容量是:10
当前集合的元素个数:11;当前list集合的容量是:15
当前集合的元素个数:12;当前list集合的容量是:15
当前集合的元素个数:13;当前list集合的容量是:15
当前集合的元素个数:14;当前list集合的容量是:15
当前集合的元素个数:15;当前list集合的容量是:15
当前集合的元素个数:16;当前list集合的容量是:22
当前集合的元素个数:17;当前list集合的容量是:22
当前集合的元素个数:18;当前list集合的容量是:22
当前集合的元素个数:19;当前list集合的容量是:22
当前集合的元素个数:20;当前list集合的容量是:22
当前集合的元素个数:21;当前list集合的容量是:22
当前集合的元素个数:22;当前list集合的容量是:22
当前集合的元素个数:23;当前list集合的容量是:33
当前集合的元素个数:24;当前list集合的容量是:33
当前集合的元素个数:25;当前list集合的容量是:33
当前集合的元素个数:26;当前list集合的容量是:33
当前集合的元素个数:27;当前list集合的容量是:33
当前集合的元素个数:28;当前list集合的容量是:33
当前集合的元素个数:29;当前list集合的容量是:33
当前集合的元素个数:30;当前list集合的容量是:33
当前集合的元素个数:31;当前list集合的容量是:33
当前集合的元素个数:32;当前list集合的容量是:33
当前集合的元素个数:33;当前list集合的容量是:33
当前集合的元素个数:34;当前list集合的容量是:49
当前集合的元素个数:35;当前list集合的容量是:49
当前集合的元素个数:36;当前list集合的容量是:49
当前集合的元素个数:37;当前list集合的容量是:49
当前集合的元素个数:38;当前list集合的容量是:49
当前集合的元素个数:39;当前list集合的容量是:49
当前集合的元素个数:40;当前list集合的容量是:49
当前集合的元素个数:41;当前list集合的容量是:49
当前集合的元素个数:42;当前list集合的容量是:49
当前集合的元素个数:43;当前list集合的容量是:49
当前集合的元素个数:44;当前list集合的容量是:49
当前集合的元素个数:45;当前list集合的容量是:49
当前集合的元素个数:46;当前list集合的容量是:49
当前集合的元素个数:47;当前list集合的容量是:49
当前集合的元素个数:48;当前list集合的容量是:49
当前集合的元素个数:49;当前list集合的容量是:49
当前集合的元素个数:50;当前list集合的容量是:73
当前集合的元素个数:51;当前list集合的容量是:73
当前集合的元素个数:52;当前list集合的容量是:73
当前集合的元素个数:53;当前list集合的容量是:73
当前集合的元素个数:54;当前list集合的容量是:73
当前集合的元素个数:55;当前list集合的容量是:73
当前集合的元素个数:56;当前list集合的容量是:73
当前集合的元素个数:57;当前list集合的容量是:73
当前集合的元素个数:58;当前list集合的容量是:73
当前集合的元素个数:59;当前list集合的容量是:73
当前集合的元素个数:60;当前list集合的容量是:73
当前集合的元素个数:61;当前list集合的容量是:73
当前集合的元素个数:62;当前list集合的容量是:73
当前集合的元素个数:63;当前list集合的容量是:73
当前集合的元素个数:64;当前list集合的容量是:73
当前集合的元素个数:65;当前list集合的容量是:73
当前集合的元素个数:66;当前list集合的容量是:73
当前集合的元素个数:67;当前list集合的容量是:73
当前集合的元素个数:68;当前list集合的容量是:73
当前集合的元素个数:69;当前list集合的容量是:73
当前集合的元素个数:70;当前list集合的容量是:73
当前集合的元素个数:71;当前list集合的容量是:73
当前集合的元素个数:72;当前list集合的容量是:73
当前集合的元素个数:73;当前list集合的容量是:73
当前集合的元素个数:74;当前list集合的容量是:109
当前集合的元素个数:75;当前list集合的容量是:109
当前集合的元素个数:76;当前list集合的容量是:109
当前集合的元素个数:77;当前list集合的容量是:109
当前集合的元素个数:78;当前list集合的容量是:109
当前集合的元素个数:79;当前list集合的容量是:109
当前集合的元素个数:80;当前list集合的容量是:109
当前集合的元素个数:81;当前list集合的容量是:109
当前集合的元素个数:82;当前list集合的容量是:109
当前集合的元素个数:83;当前list集合的容量是:109
当前集合的元素个数:84;当前list集合的容量是:109
当前集合的元素个数:85;当前list集合的容量是:109
当前集合的元素个数:86;当前list集合的容量是:109
当前集合的元素个数:87;当前list集合的容量是:109
当前集合的元素个数:88;当前list集合的容量是:109
当前集合的元素个数:89;当前list集合的容量是:109
当前集合的元素个数:90;当前list集合的容量是:109
当前集合的元素个数:91;当前list集合的容量是:109
当前集合的元素个数:92;当前list集合的容量是:109
当前集合的元素个数:93;当前list集合的容量是:109
当前集合的元素个数:94;当前list集合的容量是:109
当前集合的元素个数:95;当前list集合的容量是:109
当前集合的元素个数:96;当前list集合的容量是:109
当前集合的元素个数:97;当前list集合的容量是:109
当前集合的元素个数:98;当前list集合的容量是:109
当前集合的元素个数:99;当前list集合的容量是:109
当前集合的元素个数:100;当前list集合的容量是:109
当前集合的元素个数:101;当前list集合的容量是:109
当前集合的元素个数:102;当前list集合的容量是:109
当前集合的元素个数:103;当前list集合的容量是:109
当前集合的元素个数:104;当前list集合的容量是:109
当前集合的元素个数:105;当前list集合的容量是:109
当前集合的元素个数:106;当前list集合的容量是:109
当前集合的元素个数:107;当前list集合的容量是:109
当前集合的元素个数:108;当前list集合的容量是:109
当前集合的元素个数:109;当前list集合的容量是:109
当前集合的元素个数:110;当前list集合的容量是:163
当前集合的元素个数:111;当前list集合的容量是:163
当前集合的元素个数:112;当前list集合的容量是:163
当前集合的元素个数:113;当前list集合的容量是:163
当前集合的元素个数:114;当前list集合的容量是:163
当前集合的元素个数:115;当前list集合的容量是:163
当前集合的元素个数:116;当前list集合的容量是:163
当前集合的元素个数:117;当前list集合的容量是:163
当前集合的元素个数:118;当前list集合的容量是:163
当前集合的元素个数:119;当前list集合的容量是:163
当前集合的元素个数:120;当前list集合的容量是:163
当前集合的元素个数:121;当前list集合的容量是:163
当前集合的元素个数:122;当前list集合的容量是:163
当前集合的元素个数:123;当前list集合的容量是:163
当前集合的元素个数:124;当前list集合的容量是:163
当前集合的元素个数:125;当前list集合的容量是:163
当前集合的元素个数:126;当前list集合的容量是:163
当前集合的元素个数:127;当前list集合的容量是:163
当前集合的元素个数:128;当前list集合的容量是:163
当前集合的元素个数:129;当前list集合的容量是:163
当前集合的元素个数:130;当前list集合的容量是:163
当前集合的元素个数:131;当前list集合的容量是:163
当前集合的元素个数:132;当前list集合的容量是:163
当前集合的元素个数:133;当前list集合的容量是:163
当前集合的元素个数:134;当前list集合的容量是:163
当前集合的元素个数:135;当前list集合的容量是:163
当前集合的元素个数:136;当前list集合的容量是:163
当前集合的元素个数:137;当前list集合的容量是:163
当前集合的元素个数:138;当前list集合的容量是:163
当前集合的元素个数:139;当前list集合的容量是:163
当前集合的元素个数:140;当前list集合的容量是:163
当前集合的元素个数:141;当前list集合的容量是:163
当前集合的元素个数:142;当前list集合的容量是:163
当前集合的元素个数:143;当前list集合的容量是:163
当前集合的元素个数:144;当前list集合的容量是:163
当前集合的元素个数:145;当前list集合的容量是:163
当前集合的元素个数:146;当前list集合的容量是:163
当前集合的元素个数:147;当前list集合的容量是:163
当前集合的元素个数:148;当前list集合的容量是:163
当前集合的元素个数:149;当前list集合的容量是:163
当前集合的元素个数:150;当前list集合的容量是:163
当前集合的元素个数:151;当前list集合的容量是:163
当前集合的元素个数:152;当前list集合的容量是:163
当前集合的元素个数:153;当前list集合的容量是:163
当前集合的元素个数:154;当前list集合的容量是:163
当前集合的元素个数:155;当前list集合的容量是:163
当前集合的元素个数:156;当前list集合的容量是:163
当前集合的元素个数:157;当前list集合的容量是:163
当前集合的元素个数:158;当前list集合的容量是:163
当前集合的元素个数:159;当前list集合的容量是:163
当前集合的元素个数:160;当前list集合的容量是:163
当前集合的元素个数:161;当前list集合的容量是:163
当前集合的元素个数:162;当前list集合的容量是:163
当前集合的元素个数:163;当前list集合的容量是:163
当前集合的元素个数:164;当前list集合的容量是:244
当前集合的元素个数:165;当前list集合的容量是:244
当前集合的元素个数:166;当前list集合的容量是:244
当前集合的元素个数:167;当前list集合的容量是:244
当前集合的元素个数:168;当前list集合的容量是:244
当前集合的元素个数:169;当前list集合的容量是:244
当前集合的元素个数:170;当前list集合的容量是:244
当前集合的元素个数:171;当前list集合的容量是:244
当前集合的元素个数:172;当前list集合的容量是:244
当前集合的元素个数:173;当前list集合的容量是:244
当前集合的元素个数:174;当前list集合的容量是:244
当前集合的元素个数:175;当前list集合的容量是:244
当前集合的元素个数:176;当前list集合的容量是:244
当前集合的元素个数:177;当前list集合的容量是:244
当前集合的元素个数:178;当前list集合的容量是:244
当前集合的元素个数:179;当前list集合的容量是:244
当前集合的元素个数:180;当前list集合的容量是:244
当前集合的元素个数:181;当前list集合的容量是:244
当前集合的元素个数:182;当前list集合的容量是:244
当前集合的元素个数:183;当前list集合的容量是:244
当前集合的元素个数:184;当前list集合的容量是:244
当前集合的元素个数:185;当前list集合的容量是:244
当前集合的元素个数:186;当前list集合的容量是:244
当前集合的元素个数:187;当前list集合的容量是:244
当前集合的元素个数:188;当前list集合的容量是:244
当前集合的元素个数:189;当前list集合的容量是:244
当前集合的元素个数:190;当前list集合的容量是:244
当前集合的元素个数:191;当前list集合的容量是:244
当前集合的元素个数:192;当前list集合的容量是:244
当前集合的元素个数:193;当前list集合的容量是:244
当前集合的元素个数:194;当前list集合的容量是:244
当前集合的元素个数:195;当前list集合的容量是:244
当前集合的元素个数:196;当前list集合的容量是:244
当前集合的元素个数:197;当前list集合的容量是:244
当前集合的元素个数:198;当前list集合的容量是:244
当前集合的元素个数:199;当前list集合的容量是:244
当前集合的元素个数:200;当前list集合的容量是:244

六、list集合的去重原理

①、简单版的去重代码块:

package com.jiangwenjuan.list;

import java.util.ArrayList;

/**

  • list集合去重底层原理

  • @author 蒋文娟

  • @date 2022年6月7日 下午10:14:53
    */
    public class Demo5 {
    public static void main(String[] args) {
    ArrayList list = new ArrayList<>();
    //新增
    list.add(“zs”);
    list.add(“ls”);
    list.add(“ww”);
    list.add(“zl”);
    list.add(“ls”);
    System.out.println(list);

     ArrayList listnew = new ArrayList<>();
     for (Object object : list) {
     	if(!listnew.contains(object)) {
     		listnew.add(object);
     	}
     }
     System.out.println(listnew);
    

    }

}

[zs, ls, ww, zl, ls]
[zs, ls, ww, zl]

②、一般的面试题

结论:去重引用对象时,底层调用的是对象的equals方法

@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + age;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}

package com.jiangwenjuan.list;

import java.util.ArrayList;

/**

  • list集合去重底层原理

  • 结论:去重引用对象时,底层调用的是对象的equals方法,

  • @author 蒋文娟

  • @date 2022年6月7日 下午10:14:53
    */
    public class Demo5 {
    public static void main(String[] args) {
    ArrayList list = new ArrayList<>();
    //新增
    list.add(new Person(“zs”,18));
    list.add(new Person(“小坤”,18));
    list.add(new Person(“pzs”,29));
    list.add(new Person(“ls”,22));
    list.add(new Person(“老六”,18));
    list.add(new Person(“小坤”,18));

     System.out.println(list);//6个
     
     ArrayList listnew = new ArrayList<>();
     for (Object object : list) {
     	if(!listnew.contains(object)) {
     		listnew.add(object);
     	}
     }
     System.out.println(listnew);
    

    }

}

class Person{
private String name;
private int age;

public String getName() {
	return name;
}

public void setName(String name) {
	this.name = name;
}

public int getAge() {
	return age;
}

public void setAge(int age) {
	this.age = age;
}

public Person(String name, int age) {
	super();
	this.name = name;
	this.age = age;
}

public Person() {
	// TODO Auto-generated constructor stub
}

@Override
public String toString() {
	return "Person [name=" + name + ", age=" + age + "]";
}

// 真正去重的是equals
// @Override
// public boolean equals(Object obj) {
被调用15次,怎么来的能,第一个跟第二比,1次,第三个跟第一个和第二个比,2次,以此类推,最后就是1+2+3+4+5=15
// System.out.println(“=====equals被调用=”);
// return super.equals(obj);//这里还是不能去除重复,因为这里调用的还是原来的,所以不行
// }

@Override
public boolean equals(Object obj) {
	if (this == obj)
		return true;
	if (obj == null)
		return false;
	if (getClass() != obj.getClass())
		return false;
	Person other = (Person) obj;
	if (age != other.age)
		return false;
	if (name == null) {
		if (other.name != null)
			return false;
	} else if (!name.equals(other.name))
		return false;
	return true;
}

}

[Person [name=zs, age=18], Person [name=小坤, age=18], Person [name=pzs, age=29], Person [name=ls, age=22], Person [name=老六, age=18], Person [name=小坤, age=18]]
[Person [name=zs, age=18], Person [name=小坤, age=18], Person [name=pzs, age=29], Person [name=ls, age=22], Person [name=老六, age=18]]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值