JAVA复习5(集合——ArrayList)
- 集合
所谓集合指的就是一套动态对象数组,在实际开发中数组的概念的一定会使用的,但是数组的问题是一旦开辟空间则长度不可改变
其实就是对数据结构的一种封装,用户不用去编写,直接使用。 由于数据结构开发起来比较困难,还必须考虑性能问题
3.1 集合中需要掌握的核心接口
Collection List Set Map Iterator (了解) Enumeration Queue
3.2 List接口
List接口的定义:
public interface List<E> extends Collection<E> |
通过观察List接口的定义其继承的是Collection 接口
通过观察接口之间的关系,可以得出上图
观察Collection常用方法
1 public boolean add(E e); 增加元素到集合
2 public boolean addAll(Collection<? extends E> c); 存放一个集合
3 public boolean contains(Object o); 查找集合中的元素
4 public boolean isEmpty() ; 判断一个集合是否为空
5 public boolean remove(Object o) 删除一个集合中的元素
6 public int size(); 返回集合中的长度
观察List接口中的方法
List扩展Collection中的方法
1public E get(int index); 根据指定索引取得元素
2 public E set(int index, E element) ; 替换元素, index要替换元素下标 element要替换的元素
3 public ListIterator<E> listIterator() List自己的迭代器
List接口的特点: 可重复的, 有序的
使用List list本身是一个接口,如果想要使用一个接口则可以使用该接口的实现类完成
List下面的实现类:
需要掌握的实现类 : ArrayList LindkedList Vector
范例: 使用List 接口
public static void main(String[] args) { // 泛型的使用中 只能使用类 基本数据类型不行 List<Integer> array=new ArrayList<>(); array.add(4); //赋值 array.add(3); array.add(3); array.add(1); for(int i=0;i<array.size();i++) { System.out.println(array.get(i)); //通过get取值 } } |
通过使用ArrayList发现 其特点是 可重复的,并且有序的,顺序就存储时候的顺序
通过一个 add 增加元素到集合 通过get(index) 取出集合中的元素 下标的位置从0开始
观察其中的一些其他的操作方法:
1 判断集合是否为空 pulic boolean isEmpty();
2 取得集合中的长度 pulic int size();
3 删除集合中的元素 public boolean remove(Object obj);
public static void main(String[] args) { // 泛型的使用中 只能使用类 基本数据类型不行 List<Integer> array=new ArrayList<>(); System.out.println("&&&&&"+array.isEmpty()); array.add(4); //赋值 array.add(3); array.add(3); System.out.println(array.remove(1)); array.add(1); System.out.println(array.isEmpty()); System.out.println(array); } |
通过观察源码发现ArrayList 是一个对象数组, 每次增加的时候 会为数组扩容,数组长度是不能改变的,每次扩容数组内容拷贝的工作 ,ArrayList如果频繁增加内容,效率不高, 但是查询的时候由于底层使用的是数组,所以查询效率会高
面试题:
ArrayList保存自定义类:
首先观察使用系统自定义的类完成ArrayList类的添加
public static void main(String[] args) { // 泛型的使用中 只能使用类 基本数据类型不行 List<String> array=new ArrayList<>(); array.add("A"); array.add("B"); array.add("C"); System.out.println(array.contains("C")); for(String s:array) { System.out.println(s); } } |
以上使用的类 为系统自定义的String类 其类功能已经非常完善了,现在使用用户自定义的类完成ArrayList的添加
范例:实现自定义类
package org.list; public class Person { private String name; private int age; public Person(String name,int age) { this.name=name; this.age=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 //new Person("张三",20) public boolean equals(Object obj) { // 传进来要比较的内容 // TODO Auto-generated method stub Person per=null; if(obj instanceof Person) { per=(Person)obj; // Object 向下转型 为 Person类型 } // this 当前的对象 Person 和 传进来的Person比较 if(this==per) { //内存地址 一样肯定是同样对象 return true; } if(this.age==per.age&&this.name.equals(per.name)) { return true; } return false; } } |
通过代码,发现自定义类的时候,必须覆写equals方法才能完成集合中 对象查找和删除,主要原因是在于进行对象删除或者查找的时候 集合中会判断传入的元素和集合本身的元素是否是内容相同的元素 只有相同才会删除或者查找
JAVA复习5(集合——ArrayList)相关推荐
- [Java复习02] 集合框架 Collection
Q1 Collection java的集合以及集合之间的继承关系? 数组和链表的区别? 固定长度,连续内存,不能扩展,随机访问快,插入删除慢.链表相反 List, Set, Map的区别? List, ...
- java同步list_Java集合--ArrayList出现同步问题的原因
1 fail-fast简介 fail-fast 机制是java集合(Collection)中的一种错误机制.当多个线程对同一个集合的内容进行操作时,就可能会产生fail-fast事件. 例如:当某一个 ...
- java复习系列[6] - Java集合
Java集合 ArrayList的扩容 在add().addAll()方法中判断是否需要扩容 使用 grow() 函数以 1.5 倍的方式进行扩容 HashMap HashMap扩容流程(1.7 与 ...
- 笔记:Java中HashMap集合与ArrayList集合嵌套
import java.util.ArrayList; import java.util.HashMap; import java.util.Set; /*创建一个ArrayList集合,存储三个元素 ...
- Java复习十:集合的使用
Collection集合 collection接口的常用方法 package com.xiazhui.java1;import org.junit.jupiter.api.Test;import ja ...
- java集合-ArrayList
java集合 ArrayList Iterable Comparable(排序接口) 项目结构: class Dog implements Comparable<Dog> {private ...
- Java ArrayList和Vector、LinkedList与ArrayList、数组(Array)和列表集合(ArrayList)的区别...
ArrayList和Vector的区别 ArrayList与Vector主要从二方面来说. 一.同步性: Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的. ...
- Java 集合 ArrayList 需要知道的几个问题
问:Arraylist 的动态扩容机制是如何自动增加的?简单说说你理解的流程? 答:当在 ArrayList 中增加一个对象时 Java 会去检查 Arraylist 以确保已存在的数组中有足够的容量 ...
- Java学习——集合ArrayList类
1,集合ArrayList类底层就是用数组来实现的,其语法为: ArrayList objectName =new ArrayList<>(); 这个E一定要用引用数据类型 2,集合跟数组 ...
- JAVA基础-06.集合-14.【List、Set】
01_数据结构_栈&队列 02_数据结构_数组 03_数据结构_链表 04_数据结构_红黑树 05_HashSet集合存储数据的结构(哈希表) 06_Set集合存储元素不重复的原理 day03 ...
最新文章
- VC中BSTR和CString的使用
- WINCE基于hive注册表的实现
- 如何让你变得魅力十足
- java return true false_javascript中return,return true,return false三者的用法及区别
- oracle ignore_Oracle 数据库常用操作语句,速速收藏
- OCR 工具tesseract初体验
- 博文视点读书节第七日丨IT大咖来荐书,CS提升分享今晚开播,晒单赢福袋活动上线!
- 校园网账号在路由器上登陆
- sas mysql乱码_在SAS中如何解决中文乱码问题
- beta版和alpha版
- 光圈,焦距,工作距离与景深之间的关系。
- python找出某个文件夹下某个后缀的文件
- C#安装包安装提示:已安装了该产品的另一个版本解决方法
- T48568 【zzy】yyy送礼物
- mysql修改密码报错:Your password does not satisfy the current policy requirements
- Android之——实现应用卸载功能
- 期末Django项目实训报告
- FastDFS常用命令
- .NET Core项目读取配置文件使用Microsoft.Extensions.Configuration
- 20种热带风景摄影调色luts预设
热门文章
- 经过 Webpack 处理过的 SAP Spartacus main.js
- 如何启用 SAP Spartacus Guest checkout
- 安装 SAP Spartacus 3.0 并使用B2B功能
- 从一个实际的例子出发,谈谈SAP Commerce Cloud电商云的UI自定义开发
- 什么是SAP Spartacus schematics
- css伪类focus的测试
- Angular开发模式下的编译器和运行时的代码比较
- SAP CRM WebClient UI的on_new_focus应该怎么理解
- nodejs项目npm start背后的工作原理
- SAP云平台CloudFoundry上部署了一个应用的技术明细