集合框架(Set容器)
>两大主流:collection、map(接口)
底层实现为数组和链表;
RationalRose工具:接口与典型实现类;
List :数据是有序的(时间上有序,存放时间顺序存放),可以存放重复元素;
Set:数据是无序的,不可以存放重复元素;
>实现类:HashSet
注意:Set 是无序的,所以没有get方法,没有get第几个这一说;
对于无序的一堆数据,用只”手“抓,如果还有,就接着取;
要使用Iterator迭代器进行迭代;
HashSet hs=new HashSet();hs.add("a");hs.add("b");hs.add("c");hs.add("d");hs.add("e");Iterator iterator = hs.iterator();while (iterator.hasNext()) {System.out.println(iterator.next());}
>HashSet去重复的机制:
引用数据类型的不可重复性,
1.HashSet是根据对象的equals();方法来去重复;
2.一定要同时保证equals和hashcode方法的返回值问题,否则可能会导致误删除,性能上有缺陷,多个对象占用一个内存地址,形成多个对象占用一个内存地址,形成链条,迭代时多一个步骤,性能变慢;
>TreeSet
TreeSet 实现了SortedSet接口,是用来排序(基本数据类型默认升序)的Set实现类;
这样就产生两个问题:
1.如何实现降序;
给TreeSet提供一个comparator比较器接口,匿名内部类重写compare()方法;
构造方法摘要 | |
---|---|
TreeSet() 构造一个新的空 set,该 set 根据其元素的自然顺序进行排序。 |
|
TreeSet(Collection<? extends E> c) 构造一个包含指定 collection 元素的新 TreeSet,它按照其元素的自然顺序进行排序。 |
|
TreeSet(Comparator<? super E> comparator) 构造一个新的空 TreeSet,它根据指定比较器进行排序。 |
|
TreeSet(SortedSet<E> s) 构造一个与指定有序 set 具有相同映射关系和相同排序的新 TreeSet。 |
降序实现:
package com.ls.list;import java.util.Comparator;
import java.util.Iterator;
import java.util.TreeSet;public class Tree {public static void main(String[] args) {// 构建比较器Comparator co = new Comparator() {@Overridepublic int compare(Object o1, Object o2) {int i1 = (Integer) o1;int i2 = (Integer) o2;if (i1 > i2) {return -1;} else if (i1 < i2) {return 1;} else {return 0;}}};// 传入比较器TreeSet hs = new TreeSet(co);hs.add(9);hs.add(3);hs.add(200);hs.add(4);hs.add(100);Iterator iterator = hs.iterator();while (iterator.hasNext()) {System.out.println(iterator.next());}}}
注意:抽象数据类型和基本数据类型之间转换依靠包装类;
2.抽象数据类型怎么办;
抽象数据类型没有大小一说,不能用< >,我们可以使用比较器;
另外一种方式实现Comparable接口,重写compareto();方法 否则的话不能存储到TreeSet中去的;
代码截取:
添加比较器的方式:
实现comparable接口方式:
在Person类中重写compareto()
集合框架(Set容器)相关推荐
- java集合框架容器 java框架层级 继承图结构 集合框架的抽象类 集合框架主要实现类...
本文关键词: java集合框架 框架设计理念 容器 继承层级结构 继承图 集合框架中的抽象类 主要的实现类 实现类特性 集合框架分类 集合框架并发包 并发实现类 什么是容器? 由一个或多个确 ...
- Java基础_集合框架1
一.集合框架(体系概述) 为什么会出现集合框架(集合类)? 面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式. 数组和集合框架 ...
- 容器(一)剖析面试最常见问题之 Java 集合框架
转载自https://github.com/Snailclimb/JavaGuide/blob/master/docs/java/collection/Java%E9%9B%86%E5%90%88%E ...
- Java 容器集合框架概览
Java Collections Framework 集合的概念 集合collection,有时叫做容器container,把多个元素组成一个单元. 早期的Java (pre-1.2) 中包含了Vec ...
- java 有序容器_Java 容器集合框架概览
Java Collections Framework 集合的概念 集合collection,有时叫做容器container,把多个元素组成一个单元. 早期的Java (pre-1.2) 中包含了Vec ...
- Java【7】工具包(集合框架、函数式编程、Optional容器)
目录 1.集合与Collection集合接口 2.List集合接口 3.LinkedList分析 4.Map接口及其操作 5.HashMap 6.Set集合接口 7.Iterator接口 8.小结:J ...
- java api 框架_java常用对象API之集合框架
说到集合框架,其实刚开始学的时候有点自我感觉很简单,自己认为就是集合类中的框架之类的,但是当自己简单把它过了一变后发现懵里懵懂的,什么都没懂,于是自己又认认真真的看了一遍,才弄明白. 说到集合框架就不 ...
- spring 全局变量_[Spring]-Spring框架-02-IOC容器
Spring框架 IOC容器 理解IOC容器和DI依赖注入 IOC容器 Inverser Of Control反转控制 就是把原来在程序中创建HelloService对象的控制权限交给Spring管理 ...
- Java集合框架综述,这篇让你吃透!
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:平凡希 cnblogs.com/xiaoxi/p/60899 ...
- java集合框架史上最详解(list set 以及map)
title: Java集合框架史上最详解(list set 以及map) tags: 集合框架 list set map 文章目录 一.集合框架总体架构 1.1 集合框架在被设计时需满足的目标 1.2 ...
最新文章
- php 预订义变量,预约义变量 PHP
- 15年来,自然语言处理发展史上的8大里程碑
- Python模拟浏览器实现网页访问
- 监督学习、半监督学习、无监督学习定义
- 男人是大猪蹄子的证据找到了!
- MySQL笔记汇总---狂神说
- 自行车房车,还是第一次看到,惊倒一片!
- C++中的.和::和:和-的区别
- Android JNI(一)——NDK与JNI基础
- 每周一个设计模式之工厂方法与抽象工厂
- Unity3D之NGUI基础8:UI锚点与深度
- SLAM中直接法分类及对应的项目
- 非参数统计的Python实现—— Kruskal-Wallis 单因素方差分析
- 关于MSHTML、IHTMLDocument、Ihtmldocument2-5的区别及 document.execCommand方法详解
- 三级网络技术无纸化模拟软件 (未来)教育
- Halium 9 尝鲜 -- 在小米平板4上的移植 (二)
- linux pam 使用例子,PAM认证模块使用实例
- Swift 动画 —— 数字滚动UILabel动画
- Y z推荐菜东家 易订货生鲜系统_新零售·新生鲜——易订货生鲜专版客户交流会(贵阳站)圆满结束!...
- Google glog
热门文章
- 关于Stop The World的几个问题
- DownloadManager不好用?试试ZlsamDownloadService
- JDBC第二篇 【PreparedStatment、批处理、处理二进制、自动主键、调用存储过程、函数】...
- [20171220]toad plsql显示整形的bug.txt
- 跟我一起学习ASP.NET 4.5 MVC4.0(一)
- Java实现正整数数组的最小拼接数
- ZStack常见问题
- 实施 or 开发 ?
- MySQL 主从复制 复制过滤
- Mysql外键约束foreign key