集合的存与取2
一、泛型:
定义格式:修饰符 class 类名<代表泛型的变量> { } 注意:代表泛型的变量是引用数据类型 不是基本数据类型;
例:List<Integer> list = new ArrayList<Integer>();
含有泛型的接口:
定义格式:修饰符 interface接口名<代表泛型的变量> { }
使用泛型的好处:将运行时期的ClassCastException,转移到了编译时期变成了编译失败。避免了类型强转的麻烦。
集合中添加元素时候 在编译期间会报错;
二、当使用泛型类或者接口时,传递的数据中,泛型类型不确定,可以通过通配符<?>表示。但是一旦使用泛型的通配符后,只能使用Object类中的共性方法,集合中元素自身方法无法使用。
三、List集合存储数据
数据存储的常用结构有:堆栈、队列、数组、链表。
特点
堆栈:先进后出(类似于弹夹);
队列:先进先出(排队 过安检);
数组:查找快 增删慢(有下标 数组长度不可变);
链表:增删快 查找慢(无下标);
四、LinkedList集合(链表)
五、Vector集合(数组)
六、set接口:它里面的集合,所存储的元素就是不重复的。
原因如下:当调用set集合中add方法时候,先去调用存入的值的这个数据类型中的hashcode方法计算哈希值,然后拿着哈希值去集合中找是否有这个哈希值,如果没有,将元素存入,如果有,再调用这个数据类型中的equals方法比较内容,如果内容相同,将元素存入,如果内容相同,丢掉不存;
七、给HashSet中存储JavaAPI中提供的类型元素时,不需要重写元素的hashCode和equals方法,因为这两个方法,在JavaAPI的每个类中已经重写完毕,如String类、Integer类等。存储自定义类元素时候需进行重写;
八、存入元素有序输出 使用:LinkedHashSet
Set<String> set = new LinkedHashSet<String>();
public class LinkedHashSetDemo { public static void main(String[] args) { Set<String> set = new LinkedHashSet<String>(); set.add("bbb"); set.add("aaa"); set.add("abc"); set.add("bbc"); Iterator it = set.iterator(); while (it.hasNext()) { System.out.println(it.next()); } }
输出结果如下,LinkedHashSet集合保证元素的存入和取出的顺序:
bbb
aaa
abc
bbc
原文地址:https://www.cnblogs.com/lxc127136/p/12785572.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- JavaScript 性能优化
- 优化循环的方法-循环展开
- 程序性能优化-局部性原理
- Codeforces Round #547 (Div. 3)E. Superhero Battle
- 《动态规划_入门 LIS 问题 》
- 栅格化系统的原理以及实现
- vue-qr二维码插件使用简介
- Codeforces Round #547 (Div. 3)F1. Same Sum Blocks (Easy)
- 手机软键盘弹起导致页面变形的一种解决方案
- Codeforces Round #547 (Div. 3)F2. Same Sum Blocks (Hard)
- 《 动态规划_ 入门_最大连续子序列 》
- docker搭建elasticsearch集群
- 用canvas实现手写签名功能
- Codeforces Round #547 (Div. 3)G. Privatization of Roads in Treeland
- 《 动态规划_ 入门_最大连续子序列_HDU_1003 》