集合、增强for、泛型
Collection集合:
Collection是层次结构中的根接口,存储的元素为对象,(也就是说只能存储引用数据类型,不能存储基础数据类型),具体可查询API。
集合与数组的区别:
1、集合只能存放引用数据类型,不能存放基本数据类型,存储基本类型,需要使用基本数据类型对应的包装数据类型;数组可以存放任意数据类型
2、集合创建对象的时候,可以不定义指定长度,也可不指定内容;数组创建对象的时候必须指定长度或者元素。
3、一个集合对象中可以存放多种数据类型,而数组中只能存放一种数据类型。
4、集合的长度是可变的,数组长度是固定的。
选用的规则:当需要一个容器,既不能指定容器的内容,也无法确定容器的长度时,可以使用集合,否则建议使用数组。数组的效率是相对较高
Iterator迭代器:
当从集合获取元素的时候,有一个通用的流程,将这个通用的流程描述成了一个接口,这个接口就是Iterator。
迭代器能操作集合也能操作数组!!!
如何操作迭代器
迭代器的常用方法;
hasNext()、next()
注意事项:当一次循环中需要多次使用元素值时,一定不能使用匿名对象,否则会繁盛元素找不到的异常;
当迭代器遍历几个的过程中,不允许使用集合自身的方法,改变集合的长度。
增强for:
增强for的实质就是一个迭代器;增强for只能在JDK1.5之后才能使用;在增强for的内部不允许改变集合的长度。
增强for格式:
for(元素的数据类型 变量名 : 被迭代的集合或数组){}
泛型:
特殊的变量;保存的是引用数据类型;
带泛型的类:类定义格式:
public class 类名<泛型名>{
//成员变量
private 泛型名 name;
//成员方法
修饰符 泛型名 方法名(泛型名 参数名){
}
}
对象创建格式:
类名<具体的数据类型> 对象名 = new 类名<具体的数据类型>();
注意事项:<具体的数据类型>在等号左右两边必须保持一致,不能使用多态
泛型的好处:1、可以避免数据类型的强转2、可以将运行时期可能发生的异常提前到了编译时期。
泛型方法:当定义一个类的时候,没有使用泛型,name定义方法的时候,允许针对某一个方法使用泛型
格式:
修饰符 <泛型名> 泛型名 方法名(泛型名 参数名){
这种方法额发回执类名取决于参数的数据类型
}
这种方法调用的时候,可以调用任意数据类型的参数值。
泛型接口:
格式:
public interface 接口名<泛型名>{
抽象方法的返回值和参数类型名
public abstract 泛型名 方法名(泛型名 参数名);
}
由于接口不能直接创建对象,因此接口中的泛型的值有两种赋值的方法;
方法1:定义子类的时候,直接传递;(写死了)
public class 子类 implement 接口名<具体的数据类型>{}
方法2:定义子类的时候,子类也子类也规定泛型,name将来创建子类对象的时候,会一并将泛型的值传递给接口;
格式:
public class 子类<泛型名> implement 接口名<泛型名(必须与子类的泛型相同)>{}
泛型通配符
由于泛型中没有多态,所以采用泛型通配符的形式拜师多种数据类型
格式:
?Extends 具体的数据类型 限定了上限
?Super具体的数据类型 限定了下限
集合、增强for、泛型的更多相关文章
- Java增强的泛型
尽管Java 8是2014年年初才发布的,而Java 9要等到2016年年中,但是目前有一些计划放到某个未来版本(希望是Java 10)中的特性已经合并了进来. 具体而言,有两个比较大的特性已经开始原 ...
- 斗地主案例(利用集合/增强for等技术)
斗地主案例(利用集合/增强for等技术) package Task10; import java.util.ArrayList; import java.util.Collections; publi ...
- 编写高质量代码改善C#程序的157个建议——建议20:使用泛型集合代替非泛型集合
建议20:使用泛型集合代替非泛型集合 在建议1中我们知道,如果要让代码高效运行,应该尽量避免装箱和拆箱,以及尽量减少转型.很遗憾,在微软提供给我们的第一代集合类型中没有做到这一点,下面我们看Array ...
- JAVA基础--JAVA 集合框架(泛型、file类)16
一.集合总结 集合:Collection体系.Map体系. Collection体系:单列集合的共性操作规则. List:列表,可以重复,有下标,拥有特有的迭代器ListIterator. Array ...
- Day11_55_在Map集合中使用泛型
在Map集合中使用泛型 ``` import java.util.HashMap; import java.util.Iterator; import java.util.Map; import ja ...
- Java高级特性 第1节 集合框架和泛型
Java中,存储多个同类型的数据,可以用数组来实现,但数组有一些缺陷: 数组长度固定不变,布恩那个很好的适应元素数量动态变化的情况 可以通过数组.length获取数组长度,却无法直接获取数组中实际存储 ...
- 集合框架、泛型、迭代(java基础知识十六)
1.ArrayList存储自定义对象并遍历 此类的 iterator 和 listIterator 方法返回的迭代器是快速失败的:在创建迭代器之后,除非通过迭代器自身的 remove 或 add 方法 ...
- struts2指定集合元素的泛型
public class LoginAction implements Action{ private List users; public void setUsers(List users){ th ...
- java内部类、接口、集合框架、泛型、工具类、实现类
.t1 { background-color: #ff8080; width: 1100px; height: 40px } 一.内部类 1.成员内部类. (1)成员内部类的实例化: 外部类名.内部类 ...
- C#;DataTable添加列;DataTable转List泛型集合;List泛型集合转DataTable泛型集合;
给DataTable添加列 string sql = "select * from cgpmb order by code"; DataTable dt = Bobole.Data ...
随机推荐
- Java限流策略
概要 在大数据量高并发访问时,经常会出现服务或接口面对暴涨的请求而不可用的情况,甚至引发连锁反映导致整个系统崩溃.此时你需要使用的技术手段之一就是限流,当请求达到一定的并发数或速率,就进行等待.排队. ...
- LeetCode 277. Find the Celebrity (找到明星)$
Suppose you are at a party with n people (labeled from 0 to n - 1) and among them, there may exist o ...
- 一个简单的makefile文件编写
下午闲来无聊,就打开很久没动过的linux系统想熟悉熟悉在linux上面编译代码,结果一个makefile文件搞到晚上才搞定,哈哈! 先把代码简单贴上来,就写了一个冒泡排序: sort.h: #ifn ...
- Vue.js—快速入门
Vue.js是什么 Vue.js 是一套构建用户界面的渐进式框架.与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计.Vue 的核心库只关注视图层,它不仅易于上手,还便于与第三方库或既有项目 ...
- Leetcode题解(十七)
48.Rotate Image 题目: 分析:题目意思很简单,就是将一个n*n的矩阵顺时针旋转90度. 这道题难度不大,按照旋转的过程走一遍即可.代码如下: class Solution { publ ...
- Leetcode题解(七)
24.Swap Nodes in Pairs 题目 看到此题,第一想法是利用两个指针,分别将其所指向的节点的value交换.然后同时向后移动2个节点,代码如下: struct ListNode { i ...
- 详细解读-this-关键字在全局、函数、对象、jQuery等中的基础用法!
一.前言 1. Javascript是一门基于对象的动态语言,也就是说,所有东西都是对象,一个很典型的例子就是函数也被视为普通的对象.Javascript可以通过一定的设计模式来实现面向对象的编程,其 ...
- CUDA C Best Practices Guide 在线教程学习笔记 Part 1
0. APOD过程 ● 评估.分析代码运行时间的组成,对瓶颈进行并行化设计.了解需求和约束条件,确定应用程序的加速性能改善的上限. ● 并行化.根据原来的代码,采用一些手段进行并行化,例如使用现有库, ...
- 【APP问题定位(三)】adb安装
先来剧透一下我们需要使用的工具 bin包 一个安装目录,可以免安装直接调用adb命令 Android SDK platform tools 下面依次为大家介绍,第1个和第2 ...
- [Bayesian] “我是bayesian我怕谁”系列 - Gaussian Process
科班出身,贝叶斯护体,正本清源,故拿”九阳神功“自比,而非邪气十足的”九阴真经“: 现在看来,此前的八层功力都为这第九层作基础: 本系列第九篇,助/祝你早日hold住神功第九重,加入血统纯正的人工智能 ...