• 集合

所谓集合指的就是一套动态对象数组,在实际开发中数组的概念的一定会使用的,但是数组的问题是一旦开辟空间则长度不可改变

其实就是对数据结构的一种封装,用户不用去编写,直接使用。 由于数据结构开发起来比较困难,还必须考虑性能问题

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)相关推荐

  1. [Java复习02] 集合框架 Collection

    Q1 Collection java的集合以及集合之间的继承关系? 数组和链表的区别? 固定长度,连续内存,不能扩展,随机访问快,插入删除慢.链表相反 List, Set, Map的区别? List, ...

  2. java同步list_Java集合--ArrayList出现同步问题的原因

    1 fail-fast简介 fail-fast 机制是java集合(Collection)中的一种错误机制.当多个线程对同一个集合的内容进行操作时,就可能会产生fail-fast事件. 例如:当某一个 ...

  3. java复习系列[6] - Java集合

    Java集合 ArrayList的扩容 在add().addAll()方法中判断是否需要扩容 使用 grow() 函数以 1.5 倍的方式进行扩容 HashMap HashMap扩容流程(1.7 与 ...

  4. 笔记:Java中HashMap集合与ArrayList集合嵌套

    import java.util.ArrayList; import java.util.HashMap; import java.util.Set; /*创建一个ArrayList集合,存储三个元素 ...

  5. Java复习十:集合的使用

    Collection集合 collection接口的常用方法 package com.xiazhui.java1;import org.junit.jupiter.api.Test;import ja ...

  6. java集合-ArrayList

    java集合 ArrayList Iterable Comparable(排序接口) 项目结构: class Dog implements Comparable<Dog> {private ...

  7. Java ArrayList和Vector、LinkedList与ArrayList、数组(Array)和列表集合(ArrayList)的区别...

    ArrayList和Vector的区别 ArrayList与Vector主要从二方面来说. 一.同步性: Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的. ...

  8. Java 集合 ArrayList 需要知道的几个问题

    问:Arraylist 的动态扩容机制是如何自动增加的?简单说说你理解的流程? 答:当在 ArrayList 中增加一个对象时 Java 会去检查 Arraylist 以确保已存在的数组中有足够的容量 ...

  9. Java学习——集合ArrayList类

    1,集合ArrayList类底层就是用数组来实现的,其语法为: ArrayList objectName =new ArrayList<>(); 这个E一定要用引用数据类型 2,集合跟数组 ...

  10. JAVA基础-06.集合-14.【List、Set】

    01_数据结构_栈&队列 02_数据结构_数组 03_数据结构_链表 04_数据结构_红黑树 05_HashSet集合存储数据的结构(哈希表) 06_Set集合存储元素不重复的原理 day03 ...

最新文章

  1. VC中BSTR和CString的使用
  2. WINCE基于hive注册表的实现
  3. 如何让你变得魅力十足
  4. java return true false_javascript中return,return true,return false三者的用法及区别
  5. oracle ignore_Oracle 数据库常用操作语句,速速收藏
  6. OCR 工具tesseract初体验
  7. 博文视点读书节第七日丨IT大咖来荐书,CS提升分享今晚开播,晒单赢福袋活动上线!
  8. 校园网账号在路由器上登陆
  9. sas mysql乱码_在SAS中如何解决中文乱码问题
  10. beta版和alpha版
  11. 光圈,焦距,工作距离与景深之间的关系。
  12. python找出某个文件夹下某个后缀的文件
  13. C#安装包安装提示:已安装了该产品的另一个版本解决方法
  14. T48568 【zzy】yyy送礼物
  15. mysql修改密码报错:Your password does not satisfy the current policy requirements
  16. Android之——实现应用卸载功能
  17. 期末Django项目实训报告
  18. FastDFS常用命令
  19. .NET Core项目读取配置文件使用Microsoft.Extensions.Configuration
  20. 20种热带风景摄影调色luts预设

热门文章

  1. 经过 Webpack 处理过的 SAP Spartacus main.js
  2. 如何启用 SAP Spartacus Guest checkout
  3. 安装 SAP Spartacus 3.0 并使用B2B功能
  4. 从一个实际的例子出发,谈谈SAP Commerce Cloud电商云的UI自定义开发
  5. 什么是SAP Spartacus schematics
  6. css伪类focus的测试
  7. Angular开发模式下的编译器和运行时的代码比较
  8. SAP CRM WebClient UI的on_new_focus应该怎么理解
  9. nodejs项目npm start背后的工作原理
  10. SAP云平台CloudFoundry上部署了一个应用的技术明细