集合

结构图:

总结:

1.集合中的元素都是对象(注意不是基本数据类型),基本数据类型要放入集合需要装箱。

2.set与list的主要区别在于set中不允许重复,而list(序列)中可以有重复对象。

3.TreeSet中可以排序,HashSet是无序的;Vector和ArrayList都是可以排序的

List

1.arrayList.add(null);后  列表中会有null

2.在list中:ArrayList和Vector都有一个缺点,就是当删除或增加集合中的某一元素时,该元素后的下标会发生变化。为解决这一缺陷,我们用LinkedList,它的元素采用独立的节点,每一个节点中存放着指向下一个节点的引用。

LinkedList的优缺点:优点 - - - 有利于方便高效的进行插入和删除操作。缺点 - - - 在进行随机元素查询时效率相对较低。

3.Vector相较于ArrayList,同步时开销较大,访问速度比ArrayList慢。

4.LinkedList中的方法只能取首位值,例如银行排队时适用该集合

5. Stack类:   表示后进先出(LIFO)的对象堆栈     Last in First out

peek()
  查看堆栈顶部的对象,但不从堆栈中移除它。

E
pop()  移除堆栈顶部的对象,并作为此函数的值返回该对象。

E
push(E item)     把项压入堆栈顶部

Ps:compator排序:

范例1:

ArrayList<Employee>
emps = new ArrayList<Employee>();

emps.add(new Employee("张三1", 21));

emps.add(new Employee("张三2", 22));

emps.add(new Employee("张三3", 23));

Collections.sort(emps, new Comparator<Employee>() {

@Override

public int compare(Employee o1, Employee o2) {

return o1.getAge() - o2.getAge();

}

});

范例2

Collections.sort(emps, new EmpCompartor());

另写一个EmpCompartor()类:

public class EmpCompartor implements
Comparator<Employee> {

@Override

public int compare(Employee o1, Employee o2) {

return o1.getAge() - o2.getAge();

}

}

Set

1.       Iterator<Integer> iterator = hashSet.iterator();

Iterator的几个方法:

hasNext()
如果仍有元素可以迭代,则返回 true

next()
返回迭代的下一个元素。

remove()
从迭代器指向的
collection 中移除迭代器返回的最后一个元素(可选操作)。

   2. comparable&   Comparator    都是用来实现集合中的排序的,只是Comparable是在集合内部定义的方法实现的排序,Comparator是在集合外部实现的排序,所以,如想实现排序,就需要在集合外定义Comparator接口的方法compare()或在集合内实现Comparable接口的方法compareTo()。 

3.排序的三种方法:

A.在需要排序的类的内部继承Comparable接口并且在下面定义一个compareTo方法(其返回值类型是int,通过不同对象的减法获值)

B.在构造一个TreeSet或list集合时,在构造器内new 一个比较器,然后在文件中创建该比较器,该比较器继承Comparator接口,并且实现该接口中的compare方法,其返回值也为int型

C. 在构造一个TreeSet或list集合时,我们使用匿名内部类,来实现Comparator接口中的compare方法,在构造时直接声明。

4.HashMap与HashTable

a.HashTable是同步的,其他的大致相同;

b.Hashtable
不允许 null (key value 都不可以),HashMap 允许 null (key 和value 都可以)。

c. 遍历方式不同,Hashtable 使用Enumeration,HashMap 使用Iterator。

d. 哈希值的使用不同,Hashtable 直接使用对象的hashCode,而HashMap 重新计算hash 值,而且用与代替求模。

Ps: 1.键必须是唯一的,一个键不能对应两个值。如果在映射表内对同一个键调用两次put 方法,第二个值就会覆盖第一个值。

2.删除元素的时候,如果直接使用remove一般无法删除干净,一边使用Iterator迭代删除

6.JAVA_SE复习(集合)的更多相关文章

  1. JAVA_SE复习(OOP2)

    面向对象编程(二) 一.static 关键字 静态属性 1.不能覆盖静态方法.要被覆盖的方法必须是非静态的.在继承链中具有相同方法名的两个静态方法是两个互相独立的类方法.调用子类的静态方法只是将父类的 ...

  2. JAVA_SE复习(OOP1)

    面向对象编程(一) 一.继承 1. 在类图表示中,使用一个分为三块的矩形表示一个类.矩形的第一块表示类名,第二块描述这个类的属性及属性的数据类型,第三块描述这个类的操作,也就是方法以及返回类型.    ...

  3. [Java复习] 集合框架 Collection

    Q1 Collection java的集合以及集合之间的继承关系? 数组和链表的区别? 固定长度,连续内存,不能扩展,随机访问快,插入删除慢.链表相反 List, Set, Map的区别? List, ...

  4. 7.JAVA_SE复习(文件)

    文件和流 1.什么是节点流和处理流 InputStream & OutputStream Reader & Writer 乃节点流, 前面加File之类的名词 的节点流 其余加动词的均 ...

  5. JAVA_SE复习(多线程)

    线程 1.两种创建线程的方式都有自身的优点.  实现 Runnable 接口的优点:  从面向对象的设计观点看,Thread 类严格来讲是一个虚拟CPU 的封装,因此只有要改变或扩展该CPU 模型 ...

  6. JAVA_SE复习(异常)

    异常.调试和断言 一. 异常的分类 1. 可查异常    例: 2. 不可查异常  例:Runtime Exception 3. 异常的分类结构: 1. 不执行finally 子句的唯一情况是虚拟机关 ...

  7. JAVA_SE复习(Class)

    一.面向对象程序设计(OOP) 1.面向对象的程序设计是程序开发的一种方法.它将对象作为程序的基本单元,将程序和 数据封装其中,以提高软件的重用性.灵活性和扩展性 2.三个特征: 封装:隐藏信息 继承 ...

  8. JAVA_SE复习(basic)

    一.数据类型 1.基本数据类型 Ps:有效标识符:_.字母.$开头  之后可有数字 整型:byte 1 short 2 int 4 long 8  (字节) 取值范围:其范围是从负2 的该数据类型位数 ...

  9. 一、Java基础--01

    Java基础测试题分析 第一题是关于基本的算法知识,这个很有必要去掌握以下,在学校也经常听老师们说找工作比试面试会出一些这方面的知识,我拿到的第一题是关于排序的,虽然很简单,但是我还是要提醒一下基础不 ...

随机推荐

  1. /proc/sysrq-trigger详解

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://itnihao.blog.51cto.com/1741976/830374 htt ...

  2. Ruby on Rails Tutorial 第四章 Rails背后的Ruby 之 其他数据类型(二)

    1.方法 定义如下所示: def string_message(str='') if str.empty? "It's an empty string!" else "T ...

  3. 理解php Hash函数,增强密码安全

    1.声明 密码学是一个复杂的话题,我也不是这方面的专家.许多高校和研究机构在这方面都有长期的研究.在这篇文章里,我希望尽量使用简单易懂的方式向你展示一种安全存储Web程序密码的方法. 2.“Hash” ...

  4. E - 最短的名字

    Description 在一个奇怪的村子中,很多人的名字都很长,比如aaaaa, bbb and abababab. 名字这么长,叫全名显然起来很不方便.所以村民之间一般只叫名字的前缀.比如叫'aaa ...

  5. css笔记01:CSS例子

    body { margin:0; padding:0; background:#000 url('images/backgrounds/star.png') no-repeat fixed; font ...

  6. iOS 数据类型

    标签: 数据类型 1.Objective-C数据类型可以分为:基本数据类型.对象数据类型和id类型. 2.基本数据类型有:int.float.double和char类型. 3.对象类型就是类或协议所声 ...

  7. 在vs中跑动ransac

    期间遇到很多问题. 记一个最主要的是: LINK2019 无法识别的外部符号,然后某一个函数的函数名 然后是 @@函数名 (@) 大概长成这样.或者还就根本就是 无法识别的外部符号. 解决方案: 我这 ...

  8. Linux kill -9 和 kill -15 的区别

    “我的天呀!”,网页编辑没有自动保存草稿的功能.害的我昨天写的东西都没有了.算了,不计较这些了.反正也没写多少. 嘻嘻. 大家对kill -9 肯定非常熟悉,在工作中也经常用到.特别是你去重启tomc ...

  9. Weblogic 10.3.6 在RHEL5.4 下安装

    一WebLogic简介 webserver是用来构建网站的必要软件.可用来解析.发布网页等功能,它是用纯java开发的.weblogic本来不是由bea发明的,是它从别人手中买过来,然后再加工扩展.B ...

  10. Source Insight新建工程文件

    options->document options ->document type ->c source file 下 //添加 “.S”结尾的汇编语言支持   project -& ...