黑马程序员-----集合框架知识小节1(第一篇)
来源:互联网 发布:什么是图灵机 知乎 编辑:程序博客网 时间:2024/06/04 23:33
------- android培训、java培训、期待与您交流!
1.什么是集合类:用于存储对象
出现原因:面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象常用的一种方式。
2.数组和集合区别:
数组:存储基本数据类型,长度固定。
集合:只能存储对象,可以存储不同类型的对象,长度是可变的,
3..集合框架的概念:
集合是一个容器,而这些容器对于对象数据都有自己的存储结构,根据不同数据结构对应不同的集合类,而又将这些集合共性的部分不断向上抽取,这样构成的体系称为集合框架。
4.集合框架的构成和基本集合类:
Collection是根接口
-List:元素是有序的,元素可以重复,集合体系有索引。根据存储数据结构不同进行划分。
ArrayList:底层使用数组数据结构;具有基本的数据操作,增、删、改、查;特点是查询速度很快,但是增删稍慢。可以通过迭代器和元素角标来对数据元素进行遍历。
LinkedList:底层数据结构是链表结构。同样具备增、删、改、查数据操作。增删速度很快,查询稍慢
Vector:底层是数组数据结构,实现同步的,但是效率没ArrayList快,被其替代。枚举是它的特有取出方式,被迭代器取代。
-Set:元素是无序的(存入和取出的顺序不一定一致,元素不可以重复)
HashSet:底层数据结构式哈希表。线程是非同步的。
HashSet如何保证元素唯一性呢?
通过元素的两个方法,hashCode和equals来完成如果元素的HashCode值相同,才会判断equals是否为true。如果元素的HashCode值不同,不会调用equals。
TreeSet:底层数据结构式二叉树,保证元素唯一性的依据。可以对Set集合中的元素进行排序。存的对象具备比较性。
TreeSet排序的第一种方式,让元素自身具备比较性。元素需要实现Compareable接口,覆盖compareTo方法。
TreeSet 第二种排序方式。当元素自身不具备比较性时,需要容器本身具备比较性,定义了比较器,将对象传递给TreeSet的构造函数。
5.TreeSet的应用实例
//TreeSetDemo对TreeSet的演示。
//学生类实现Comparable接口,对compareTo方法重写
import java.util.*;class Student implements Comparable{ private String name; private int age; Student(String name,int age) { this.name=name; this.age=age; } public String getName() { return name; } public int getAge() { return age; } //重写Comparable中的compareTo 方法,对象存储时自定义的比较方法 public int compareTo(Object obj) { if(!(obj instanceof Student)) throw new RuntimeException("不是学生对象"); Student s=(Student)obj;// System.out.println(this.age+"---"+s.age); if(this.age<s.age) return 1; if(this.age==s.age) return this.name.compareTo(s.name); return -1; }
}class TreeSetDemo{ public static void main(String[] args) { TreeSet<Student> ts=new TreeSet<Student>(); //定义treeset类并传入比较器对象。 TreeSet<Student> ts2=new TreeSet<Student>(new Mycompare()); ts.add(new Student("java01",22)); ts.add(new Student("java02",19)); ts.add(new Student("java0234",19)); ts2.add(new Student("java999",11)); ts2.add(new Student("java88",12)); ts2.add(new Student("ja88",12)); Iterator it=ts.iterator(); Iterator it2=ts2.iterator(); while(it.hasNext()) { Student s=(Student)it.next(); System.out.println(s.getName()+"--"+s.getAge()); } while(it2.hasNext()) { Student s=(Student)it2.next(); System.out.println(s.getName()+"--"+s.getAge()); } }}//通过定义比较器来实现具备比较性。class Mycompare implements Comparator{ //重写comparetor的compare方法,两个比较对象 public int compare(Object b1,Object b2) {
Student s1=(Student)b1; Student s2=(Student)b2; int num=s1.getName().compareTo(s2.getName()); if(num==0) { return ((Integer)s1.getAge()).compareTo(new Integer(s2.getAge())); } return num; }}
- 黑马程序员-----集合框架知识小节1(第一篇)
- 黑马程序员————集合框架小结(第一篇)
- 黑马程序员-第十四天(集合框架)
- 黑马程序员_Java第14天知识总结_集合类(集合框架)_Collection_迭代器_List_Set_HashSet
- 黑马程序员_【总结】_集合框架知识梳理1
- 集合框架知识简要-----------黑马程序员
- 黑马程序员 —— JavaAPI_集合框架 (第十四天)
- 黑马程序员------第10天笔记(集合框架)
- 黑马程序员——第九天(集合框架)
- 黑马程序员--第十四天:集合框架
- 黑马程序员-集合框架(1)
- "黑马程序员"java集合框架(1)
- 黑马程序员—集合框架(1)
- 黑马程序员--集合框架(1)
- 黑马程序员 七、集合框架(1)
- 黑马程序员-集合框架1
- 黑马程序员---黑马第一篇
- 黑马程序员_【总结】_集合框架知识梳理2
- Add Two Numbers
- 2014年十大苦逼行业,看看你中枪了吗?
- libevent for qt网络模块,直接替换qt的select模型,支持epoll,select,pool.使用非常简单,无需修改以前的代码结构
- 目标检测学习记录——特征提取之HOG
- HTML绘图
- 黑马程序员-----集合框架知识小节1(第一篇)
- Longest Substring Without Repeating Characters
- Objective-C语言--iOS应用程序入口
- Python集合(set)类型的操作
- Android的四大组件
- Java定时器Timer()
- Linux设备驱动程序学习笔记11:输入设备子系统
- J2ME中绘制和填充多边形
- Two Sum