集合框架系列(一)之 list集合

文章介绍了Java中List集合的特点,包括有序性和可重复性,以及ArrayList和LinkedList的区别。详细阐述了三种遍历List的方式:for循环、foreach和迭代器。接着,文章利用LinkedList实现了一个堆栈容器,并讨论了List的容量增长因子。最后,通过示例代码展示了如何使用equals方法进行列表去重。
摘要由CSDN通过智能技术生成

一. list集合的特点

  • 1.1 list集合本身就是一个容器,具有增删改查的特点。
  • 1.2 有序性:元素添加的顺序即为元素输出的顺序。
  • 1.3 可重复性
  • 1.4list的两个子类 ArrayList与LinkedList的区别:
    ArrayList的数据结构是数组,查询修改快,增加删除慢
    LinkedList的数据结构是链表,查询修改慢,增加删除快。

二. list集合的遍历方式

2.1 for循环通过下标遍历

2.2 通过foreach遍历

2.3 通过迭代器遍历

在这里插入图片描述

三. 用LinkedList完成一个堆栈容器

堆栈:就是实现集合元素先存进去的后输出,后存进去的先输出。(先进先出)
在这里插入图片描述

四. list调优(增长因子)

元素存储在集合的过程
长度增加为原来的1.5倍
1+0.5,0.5是增长的因子
在这里插入图片描述

五. list去重原理

通过equals方法判断是否相同来去除重复项。

package com.xissl.collection01;

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

/**
 * list底层对象去重原理
 * @author xissl
 *
 */
public class Demo04 {
	
	public static void main(String[] args) {
		List list = new ArrayList();
		list.add(new student(1, "yh"));
		list.add(new student(2, "nb"));
		list.add(new student(3, "lj"));
		List Newlist = new ArrayList<>();
		for (Object object : list) {
			if(!Newlist.contains(object)) {
				Newlist.add(object);
			}
		}
		System.out.println("去重前的list元素"+list);
		System.out.println("去重后的list元素"+Newlist);	
	}
}

class student{
	private int id;
	private String name;
	public student() {
		// TODO Auto-generated constructor stub
	}
	public student(int id, String name) {
		super();
		this.id = id;
		this.name = name;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	@Override
	public String toString() {
		return "student [id=" + id + ", name=" + name + "]";
	}
	
	@Override
	public boolean equals(Object obj) {
		System.out.println("重写了equals方法");
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		student other = (student) obj;
		if (id != other.id)
			return false;
		if (name == null) {
			if (other.name != null)
				return false;
		} else if (!name.equals(other.name))
			return false;
		return true;
	}
	
}

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不念那年晚春

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值