集合框架(二)

List的子类(掌握)

1、List的子类特点

		ArrayList:
			底层数据结构是数组,查询快,增删慢
			线程不安全,效率高
		Vector:
			底层数据结构是数组,查询快,增删慢
			线程安全,效率低
		LinkedList:
			底层数据结构是链表,查询慢,增删快
			线程不安全,效率高

2、ArrayList

		没有特有功能需要学习

3、Vector

		a:添加
				public void addElement(E obj)		--	add()
		b:获取
				public E elementAt(int index)		--	get()
				public Enumeration elements()	--  iterator()

4、LinkedList

			a:添加
				addFirst()
				addLast()
			b:删除
				removeFirst()
				removeLast()
			c:获取
				getFirst()
				getLast()

5、案例

		A:去除集合中的多个字符串的重复元素
			如果字符串的内容相同,即为重复元素
		B:去除集合中的多个自定义对象的重复元素
			如果自定义对象的成员变量值都相同,即为重复元素
		C:用LinkedList模拟一个栈数据结构的集合类,并测试。
			你要定义一个集合类,只不过内部可以使用LinkedList来实现。

泛型(掌握)

	1、泛型概述
		是一种把明确类型的工作推迟到创建对象或者调用方法的时候才去明确的特殊的类型。
	2、格式:
		<数据类型>
		注意:该数据类型只能是引用类型。
	3、好处:
		A:把运行时期的问题提前到了编译期间
		B:避免了强制类型转换
		C:优化了程序设计,解决了黄色警告线问题,让程序更安全
	4、泛型的前世今生
		A:泛型的由来
			Object类型作为任意类型的时候,在向下转型的时候,会隐含一个转型问题
		B:泛型类
		C:泛型方法
		D:泛型接口
		E:泛型高级通配符
			?
			? extends E
			? super E
	5、我们在哪里使用呢?
		一般是在集合中使用。

增强for循环(掌握)

	1、是for循环的一种
	2、格式:
		for(元素的数据类型 变量名 : 数组或者Collection集合的对象) {
			使用该变量即可,该变量其实就是数组或者集合中的元素。
		}
	3、利:
		简化了数组和集合的遍历
	4、弊:
		增强for循环的目标不能为null。建议在使用前,先判断是否为null。

静态导入(了解)

	1、如果我们在写方法的时候,参数个数不明确,就应该定义可变参数。
	2、格式:
		修饰符 返回值类型 方法名(数据类型... 变量) {}

		注意:
			A:该变量其实是一个数组名
			B:如果一个方法有多个参数,并且有可变参数,可变参数必须在最后
	3、Arrays工具类的一个方法
		asList()把数组转成集合。
		注意:这个集合的长度不能改变。

可变参数(掌握)

	1、可以导入到方法级别的导入
	2、格式:
		import static 包名....类名.方法名;
	3、注意事项:
		A:方法必须是静态的
		B:如果多个类下有同名的方法,就不好区分了,还得加上前缀。
			所以一般我们并不使用静态导入,但是一定要能够看懂。

Set集合(理解)

1、List的子类特点

		Set集合的特点
			无序,唯一

2、HashSet集合(掌握)

		A:底层数据结构是哈希表(是一个元素为链表的数组)
		B:哈希表底层依赖两个方法:hashCode()和equals()
		  执行顺序:
			首先比较哈希值是否相同
				相同:继续执行equals()方法
					返回true:元素重复了,不添加
					返回false:直接把元素添加到集合
				不同:就直接把元素添加到集合
		C:如何保证元素唯一性的呢?
			由hashCode()和equals()保证的
		D:开发的时候,代码非常的简单,自动生成即可。
		E:HashSet存储字符串并遍历
		F:HashSet存储自定义对象并遍历(对象的成员变量值相同即为同一个元素)

3、TreeSet集合

		A:底层数据结构是红黑树(是一个自平衡的二叉树)
		B:保证元素的排序方式
			a:自然排序(元素具备比较性)
				让元素所属的类实现Comparable接口
			b:比较器排序(集合具备比较性)
				让集合构造方法接收Comparator的实现类对象
		C:把我们讲过的代码看一遍即可

4、案例

			键盘录入学生按照总分从高到底输出

Collection集合总结(掌握)

	Collection
		|--List	有序,可重复
			|--ArrayList
				底层数据结构是数组,查询快,增删慢。
				线程不安全,效率高
			|--Vector
				底层数据结构是数组,查询快,增删慢。
				线程安全,效率低
			|--LinkedList
				底层数据结构是链表,查询慢,增删快。
				线程不安全,效率高
		|--Set	无序,唯一
			|--HashSet
				底层数据结构是哈希表。
				如何保证元素唯一性的呢?
					依赖两个方法:hashCode()和equals()
					开发中自动生成这两个方法即可
				|--LinkedHashSet
					底层数据结构是链表和哈希表
					由链表保证元素有序
					由哈希表保证元素唯一
			|--TreeSet
				底层数据结构是红黑树。
				如何保证元素排序的呢?
					自然排序
					比较器排序
				如何保证元素唯一性的呢?
					根据比较的返回值是否是0来决定

针对Collection集合我们到底使用谁呢?(掌握)

	唯一吗?
		是:Set
			排序吗?
				是:TreeSet
				否:HashSet
		如果你知道是Set,但是不知道是哪个Set,就用HashSet。

		否:List
			要安全吗?
				是:Vector
				否:ArrayList或者LinkedList
					查询多:ArrayList
					增删多:LinkedList
		如果你知道是List,但是不知道是哪个List,就用ArrayList。

	如果你知道是Collection集合,但是不知道使用谁,就用ArrayList。

	如果你知道用集合,就用ArrayList。

在集合中常见的数据结构(掌握)

	ArrayXxx:底层数据结构是数组,查询快,增删慢
	LinkedXxx:底层数据结构是链表,查询慢,增删快
	HashXxx:底层数据结构是哈希表。依赖两个方法:hashCode()和equals()
	TreeXxx:底层数据结构是二叉树。两种方式排序:自然排序和比较器排序
时间: 2024-12-17 22:23:46

集合框架(二)的相关文章

Java集合框架(二)

Set Set:无序,不可以重复元素. |--------HashSet:数据结构是哈希表. 线程是非同步的.保证元素唯一性的原理是:判断元素的hashCode值是否相同,如果相同,还会继续判断元素的equals方法,是否为true |--------TreeSet:可以对Set集合中元素进行排序.  底层数据结构是二叉树(也叫红黑树),保证元素唯一性的依据是:compareTo()方法return 0. TreeSet排序的第一种方式:让元素自身具备比较性.元素需要实现Comparable接口

java 集合框架二(list)

/* Collection: |--List:集合中的元素是有序的,可重复的,有索引. |--Set:集合中的元素是无序的,不可重复的,无索引. List中的特有方法: 增 add(index,element); addAll(index,Collection); 删 remove(index); 改 set(index,element); 查 get(index); subList(start,end); listIterator(); 其他: indexOf(obj);//通过indexOf

JAVA学习第三十四课(常用对象API)- 集合框架(二)—List集合及其子类特点

整个集合框架中最常用的就是List(列表)和Set(集) 一.List集合 && Set的特点 Collection的子接口: 1.List:有序(存入和取出的顺序一致),元素都有索引且可以重复    API文档解释:有序的 collection(也称为序列).此接口的用户可以对列表中每个元素的插入位置进行精确地控制.用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素. 2.Set:元素不能重复,无序,有可能会有序    API文档解释:一个不包含重复元素的 coll

(二)java集合框架综述

一集合框架图 说明:对于以上的框架图有如下几点说明 1.所有集合类都位于java.util包下.Java的集合类主要由两个接口派生而出:Collection和Map,Collection和Map是Java集合框架的根接口,这两个接口又包含了一些子接口或实现类.2. 集合接口:6个接口(短虚线表示),表示不同集合类型,是集合框架的基础.3. 抽象类:5个抽象类(长虚线表示),对集合接口的部分实现.可扩展为自定义集合类.4. 实现类:8个实现类(实线表示),对接口的具体实现.5. Collectio

Java集合框架(二)day_16

16.集合框架(去除ArrayList中重复字符串元素方式)(掌握) public class Demo1_ArrayList { /** * * A:案例演示 * 需求:ArrayList去除集合中字符串的重复值(字符串的内容相同) * 思路:创建新集合方式 */ public static void main(String[] args) { ArrayList list = new ArrayList(); list.add("a"); list.add("a"

jdk源码阅读笔记之java集合框架(二)(ArrayList)

关于ArrayList的分析,会从且仅从其添加(add)与删除(remove)方法入手. ArrayList类定义: p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Monaco } span.s1 { color: #931a68 } public class ArrayList<E> extends AbstractList<E> implements List<E> ArrayList基本属性: /** *

我所理解Java集合框架的部分的使用(Collection和Map)

所谓集合,就是和数组类似--一组数据.java中提供了一些处理集合数据的类和接口,以供我们使用. 由于数组的长度固定,处理不定数量的数据比较麻烦,于是就有了集合. 以下是java集合框架(短虚线表示接口,长虚线表示抽象类,实线表示类,箭头表示实现接口或者继承)(在网络上找的图,不知道原作者,侵权请联系我删除)(总之,关系很复杂,所以不用记得这个图,只是用来吓吓人而已的). 下面贴上个人理解之精简版之Collection(集)和Map(地图?暂且这么理解吧),话说思维导图蛮好用,以下是两幅思维导图

【集合框架】JDK1.8源码分析之Collections &amp;&amp; Arrays(十)

一.前言 整个集合框架的常用类我们已经分析完成了,但是还有两个工具类我们还没有进行分析.可以说,这两个工具类对于我们操作集合时相当有用,下面进行分析. 二.Collections源码分析 2.1 类的属性   2.2 构造函数 private Collections() { } 说明:私有构造函数,在类外无法调用. 2.3 方法分析 下面是Collections的所有方法. 可以看到,Collections的方法包含了各种各样的操作.下面分析最常用的方法. 1. sort函数 该函数有两个重载函

8. 集合框架:★★★★★

集合框架:★★★★★,用于存储数据的容器. 特点: 1:对象封装数据,对象多了也需要存储.集合用于存储对象. 2:对象的个数确定可以使用数组,但是不确定怎么办?可以用集合.因为集合是可变长度的. 集合和数组的区别: 1:数组是固定长度的:集合可变长度的. 2:数组可以存储基本数据类型,也可以存储引用数据类型:集合只能存储引用数据类型. 3:数组存储的元素必须是同一个数据类型:集合存储的对象可以是不同数据类型.   数据结构:就是容器中存储数据的方式. 对于集合容器,有很多种.因为每一个容器的自身

黑马程序员-集合框架(Map和Collections)

--Java培训.Android培训.iOS培训..Net培训.期待与您交流!--- 一.概述 Map是一种存储键值对的存储容器,而且保证键的唯一性.提供一种以"键"标识"值"的数据存储方式.接口形式为:Map<K,V>,其中K是此映射所维护的键的类型,V是映射值的类型.其有两个常用子类,HashMap和TreeMap,另有HashTable与HashMap功能类似,是早期版本.三者特点与不同如下: HashMap:JDK1.2版本出现,底层使用哈希表数