Java基础--第十七天

泛型

一、常见数据结构:栈,队列,链表,数组,树,图,堆……

栈:先进后出--压栈、弹栈

队列:先进先出

数组:存储多个同一种元素,元素有编号【数组插入/删除数据】

查询快,增删慢

链表:把一些结点通过链子链接起来的数据结构。

结点:由地址(指针)域和数值域组成

增删快,查询慢

二、List三个子类特点

线程安全(同步)【效率降低】:

ArrayList类:底层数据结构是数组,查询快,增删慢,不安全

Vector:底层数据结构是数组,查询快,增删慢

线程安全,效率低

LinkedList:底层数据结构是链表,查询慢,增删快;

线程不安全,效率高

三、Vector特有功能

public void addElement(Object obj)---add

public Object elementAt(int index)---get

public Enumeration elements()----Iterator[hasNext   next]

public int size()

四、LinkedList特有功能

添加

void addFirst(E e)

void addLast(E e)

获取

Object getFirst()

Object getLast()

删除

Object removeFirst()

Object removeLast()

【模拟题】通过LinkedList模拟栈结构---包装

要模拟的对象特点

五、泛型

任意的类型,是一种把明确数据类型的工作放在了创建对象或者调用方法时候进行的特殊类型。

模仿数组解决

泛型特点:

A:解决黄色警告线问题;

B:把运行期间的类型转换异常提前到编译期间;

C:优化程序设计

用于限定存储数据类型一致问题,数据类型后面

六、增强for循环

格式

作用

增强for和迭代器一般只选一种,增强for是来替代迭代器的

注意:增强for是用来替代迭代器的,不能用集合对象对集合对象进行修改

泛型类:

把泛型定义在类上。

泛型方法:

泛型定义在方法上

泛型接口

实例:String泛型中追加int型数据

Day16总结

1:常见的数据结构

(1)提升等级:数据结构+算法+UML+设计模式

(2)栈,队列,数组,链表

栈:先进后出

队列:先进先出

数组:查询快,增删慢

链表:查询慢,增删快

2:List的三个儿子

(1)List的三个儿子特点:

List

|--ArrayList

底层数据结构是数组,查询快,增删慢

线程不安全,效率高

|--Vector

底层数据结构是数组,查询快,增删慢

线程安全,效率低

|--LinkedList

底层数据结构是链表,查询慢,增删快

线程不安全,效率高

(2)根据需求使用具体对象:

是否要安全:

是:Vector

否:ArrayList,LinkedList

查询多:ArrayList

增删多:LinkedList

不清楚时,用ArrayList。

(3)ArrayList

重写equqls三个步骤

1. 判断是否为同一个对象

2. 判断是否为该类的对象

3. 向下转型,然后根据需求比较成员变量

(4)Vector     C++中依旧在用  STL

有自己的特殊功能。

但是不用,被新功能给替代了。

(5)LinkedList(存储字符串和自定义对象)

有自己的特殊功能。可以很方便的操作头和尾。

(6)案例:(今天作业之一)

A:ArrayList存储字符串并去除重复值

B:ArrayList存储自定义对象并去除重复值

需求:我们认为同姓名和同年龄的人即为同一个人。

C:用LinkedList模拟栈数据结构

3:泛型

(1)泛型是一种把明确类型的工作放在了创建对象或者调用方法时候才去明确的特殊的类型。

(2)格式:

<数据类型>

(3)好处:

A:解决了黄色警告线问题

B:把运行期间的转换异常给提前到了编译期间

C:优化了程序设计,不需要做强制类型转换了

(4)泛型的前世今生

A:泛型类

B:泛型方法

C:泛型接口

(5)泛型的使用:

看API中的类或者接口,其后是否跟有<>,如果有,就是泛型的应用。

一般在集合中用。

4:增强for循环

(1)格式:

for(数组或者Collection集合的元素类型 变量 : 数组或者Collection集合的对象)

{

直接使用变量即可。

}

(2)好处:

方便了数组和Collection集合的遍历。

(3)注意(注意):

A:增强for是用来替代迭代器的。

B:不要在用增强for遍历集合的时候,用集合对集合本身进行修改。

(4)遍历集合三种方式

迭代器

普通for+get

增强for(工作时候用)

时间: 2024-12-21 13:20:11

Java基础--第十七天的相关文章

java基础第十七天_QQ案例

QQ案例 ----------------------------------------------------- 项目源码: package com.it18zhang.client; import java.net.Socket; /** * 通信类,单例类 */ public class Comm { private String ip = "192.168.12.2"; private int port = 1234 ; private static Comm instanc

java基础第十七篇之网络编程和装饰者模式

1:网络概述 1.1 网络的发展Net 1964年,美国人---> 阿帕网--->以太网Internet 1.2 网络的通信协议 windows电脑,android手机,Mac平板--->联网 ---->网络协议(一个文档:长度,速率,格式) --->根据文档来写了一段代码(通信协议) 1.3 通信协议的分类 TCP/IP协议: 是一组协议 TCP:传输控制协议 IP :互联网协议 1.4 TCP/IP的分层 应用层:主要负责应用程序的协议,用来产生和显示数据 HTTP:超文

HashSe、LinkedHashSet、TreeSet(java基础知识十七)

1.HashSet存储字符串并遍历 * 特点:无序.无索引.无重复 HashSet存储字符串并遍历 HashSet<String> hs = new HashSet<>(); hs.add("a"); hs.add("b"); hs.add("a"); hs.add("c"); hs.add("c"); hs.add("d"); boolean b = hs.ad

夯实Java基础系列目录

学习Java语言也有很长一段时间了,但是之前只是学习了Java的基础部分,对于什么IO流.多线程之类的只学习了一点,并没有过多的去学习,所以随着后面学习的深入,发现没有这部分知识更加的重要,所以现在我又重新来复习一遍Java基础,努力打好自己的Java基础,在这里我要说句话(其实一万句都不够):Java基础非常重要!Java基础非常重要!Java基础非常重要! 一.Java基础 1.夯实Java基础(一)--数组 2.夯实Java基础(二)--面向对象之封装 3.夯实Java基础(三)--面向对

Java进阶(五十七)-基于感知哈希算法的图像配准

Java进阶(五十七)-基于感知哈希算法的pHash图像配准算法 ??毕业论文提交之后,老师交给自己一项任务:图像配准,也就是给你两幅图像,通过系统来判定两幅图像是否为同一副图像.自己作为这一方面的小白,先去网上搜索一下相应的检测方法,当然有现成的API调用最好,花钱也无所谓. ??我们这里采用的基础关键技术叫做 "感知哈希算法"(Perceptual hash algorithm),它的作用是对每张图片生成一个"指纹"(fingerprint)字符串,然后比较不同

JAVA基础学习-集合三-Map、HashMap,TreeMap与常用API

一.Map简述 1.1.简述 public interface Map<K,V> 类型参数: K - 此映射所维护的键的类型 key V - 映射值的类型 value 该集合提供键--值的映射.key不能重复,一对对的存储方式 将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值. 1.2.方法 嵌套类摘要 static interface Map.Entry<K,V> 映射项(键-值对). 方法摘要 void clear() 从此映射中移除所有映射关系(可选操

“全栈2019”Java第五十七章:多态与构造方法详解

难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第五十七章:多态与构造方法详解 下一章 "全栈2019"Java第五十八章:多态中方法返回类型可以是子类类型 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf,回复"Java

“全栈2019”Java第八十七章:类中嵌套接口的应用场景(拔高题)

难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第八十七章:类中嵌套接口的应用场景(拔高题) 下一章 "全栈2019"Java第八十八章:接口中嵌套接口的应用场景 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf,回复"J

“全栈2019”113篇Java基础学习资料及总结

难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第一章:安装JDK11(Mac) "全栈2019"Java第二章:安装JDK11(Windows) "全栈2019"Java第三章:安装开发工具IntelliJ IDEA "全栈2019"Java第四章:创建第一个Java程序 "全栈2019