当前位置: 首页 > article >正文

List集合特点,遍历方式,ArrayList(去重原理,增长因子论,LinkedList)

for (int i = 0; i < list.size(); i++) {

System.out.println(list.get(i));

}

foreach遍历,代码如下

// 使用foreach遍历

for (String s : list) {

System.out.println(s);

}

迭代器iterater遍历,代码如下

// 使用迭代器遍历(和数据库取数据一样,

Iterator it = list.iterator();

while (it.hasNext()) {// 判断条件

System.out.println(it.next());// 是否有下一个

}

4.LinkedList


实现队列,特点:先进先出,一次只能取一个

实现堆栈,特点:反向输出

代码如下:

public class Demo2 {

public static void main(String[] args) {

LinkedList list=new LinkedList<>();

Dl d=new Dl(list);

d.push(“a”);

d.push(“b”);

d.push(“c”);

/**

  • 队列的特点 先进先出

  • 一次只能取一个

  • 堆栈的特点 反向输出

*/

System.out.println(d.pop());

System.out.println(d.pop());

System.out.println(d.pop());

}

}

//队列

class Dl{

LinkedList ll=null;

public Dl(LinkedList ll){

this.ll=ll;

}

//从容器中取元素

public String pop() {

return ll.removeFirst();//堆栈,removeLast

}

public void push(String s) {

ll.add(s);

}

}

队列输出为abc,堆栈输出为cba

5.增长因子论证


ArrayList集合底层是数组结构,他是“可变数组” 一旦超过默认数组长度,会自动扩容 扩容因子为0.5

代码如下:

public class Demo3 {

public static void main(String[] args) throws SecurityException, Exception{

ArrayList list = new ArrayList<>();

for (int i = 1; i < 101; i++) {

System.out.println(i);

list.add(i);

printgetElementDateLength(list);

}

}

private static void printgetElementDateLength(ArrayList list)throws Exception,SecurityException{

Field f=list.getClass().getDeclaredField(“elementDate”);

f.setAccessible(true);

Object[] elementDate =(Object[]) f.get(list);

System.out.println(“目前list集合底层存储数据的数组长度:”+elementDate.length);

}

}

输出结果为:

6.List集合去重原理


判断是否重复的方法:

去重原理:

当没有写equals方法时,可以加入重复的学生对象,当写了equals方法后,equals方法被调用,不可重复增加

list.add(new Student(“zs”, 16));

list.add(new Student(“ls”, 17));

list.add(new Student(“ad”, 18));

if (!list.contains(new Student(“ad”, 18))) {

list.add(new Student(“ad”, 18));

}

for (Object o : list) {

System.out.println(o);

}

}

}

class Student {

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;

}

@Override

public String toString() {

return “Student [name=” + name + “, age=” + age + “]”;

}

public Student(String name, int age) {

super();

this.name = name;

this.age = age;

}

@Override

public int hashCode() {

System.out.println(“hashCode方法被调用—”);

final int prime = 31;

int result = 1;

result = prime * result + age;

result = prime * result + ((name == null) ? 0 : name.hashCode());

return result;

}

@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 (age != other.age)

return false;

if (name == null) {

if (other.name != null)

return false;

} else if (!name.equals(other.name))

return false;


http://www.kler.cn/a/300689.html

相关文章:

  • AUTOSAR从入门到精通-无人驾驶网约车(Robotaxi)
  • LLM - 大模型 ScallingLaws 的 CLM 和 MLM 中不同系数(PLM) 教程(2)
  • 源码编译安装httpd 2.4,提供系统服务管理脚本并测试
  • C#上位机通过CAN总线发送bin文件
  • Jmeter如何进行多服务器远程测试
  • openharmony标准系统方案之瑞芯微RK3568移植案例
  • 【Kubernetes】常见面试题汇总(十一)
  • milvus的二进制文件集群部署
  • 区块链当前发展和未来展望
  • 【微服务】⭐️华为云obs功能抽取到公共服务,供所有项目使用
  • 【机器学习】马尔可夫随机场的基本概念、和贝叶斯网络的联系与对比以及在python中的实例
  • JS设计模式之装饰者模式:优雅的给对象增添“魔法”
  • 健身房|基于springboot的健身房管理系统设计与实现(附项目源码+论文+数据库)
  • Python数据分析与可视化
  • leetcode hot100_part01_哈希
  • Spring和Spring FrameWork有什么关系?两者是同一个东西吗?
  • 白帽SEO搜索引擎pc端怎么引流
  • Chrome和Chromium浏览器有什么不同?
  • knowLedge-在组件的第一次创建时执行某个方法,而在后续的创建中不执行:
  • 智能路口安全预警系统:精准提醒降低事故发生率
  • 继收购西门子物流自动化后,丰田又投资一家AGV公司,智能物流版图已极其夸张...
  • less和css在写法上有什么区别吗?
  • yield return request.SendWebRequest()
  • 9.11近日工作踩坑
  • 828华为云征文 | 华为云Flexusx实例,高效部署Servas书签管理工具的优选平台
  • Dynamics CRM Ribbon Workbench-the solution contains non-entity components