第48节:Java当中的集合框架
2021-06-19 23:07
标签:int xxx 数据结构 集合框架 asm 博客 cas 数据类型 exception 在我们班里有 结果来了一位插班生,该同学因为觉得学 为了解决新同学的问题,老师们重新创建一个空间(重复创建一个新的数组),为了能够更好的解决问题,老师提供了可以不断扩大空间(Java提供了集合,当数据多了,个数不稳定时,可以用集合)。 在 虽然数组和集合类都是容器 数组也可以存储对象的,但是因为长度的固定,限制了数组,而集合的长度是可以改变的,在数组中可以用来存储基本数据类型,而在集合中只能用来存储对象,但是可以存的对象可以是不同类型的对象哦~ 数组可以存放基本数据类型和对象 在 集合框架的构成及分类 类集框架,那么什么是类集框架,集合的种类有哪些,类集框架的基础结构。 类集框架是一组类和接口的集合,位于java.util包当中,是用来用户存储和管理对象的,在这个类集合框架中,我们主要学习的为三大类,分别是集合,列表和映射。 集合,列表,映射 类集合框架是 其实在 所以的根接口为 注意一些 这些都跟三大类有关。 在 来解释:一些 出现了集合框架,有了很多种容器可以完成很多需求,我们区分容器是靠着每个容器的数据结构不同,去命名了解的。 迭代是 接口 迭代器的方法 在 Collection 往后余生,唯独有你 第48节:Java当中的集合框架 标签:int xxx 数据结构 集合框架 asm 博客 cas 数据类型 exception 原文地址:https://www.cnblogs.com/dashucoding/p/9689769.html
Java当中的集合框架
01
50位同学,就有50位对象。// 简书作者:达叔小生
Student[] stus = new Student[20];IT行业好,才要求老师转专业的。可以结果没有多余的空位了,数组里的长度都是安排好的,没有空间了。Java中,数组的长度是不可以改变的,在数组中存储的是同种类型的元素,可以存储基本数据类型值;但是集合的长度是可以改变的,存储的是对象,对象的类型可以不一样,集合是存储对象的,当数据多,即对象多的时候,可以用集合来存储。
为什么用集合来解决问题,数组难道就不可以吗?
集合只能存放对象Java语言这种面向对象语言中,对一切事物的体现都可以用对象的形式来表现,为了对对象进行方便的操作,Java就提供了集合这个名词,用来存储对象一种方式。02
类集合框架主体

// 简书作者:达叔小生
java.util
类 Vector// 简书作者:达叔小生
public class Vector
jdk提供的一类类和接口,主要掌握集合,列表,映射,集合是无序的,集合中的元素不允许是重复的,列表是有序的,列表中的元素是允许重复的,映射是以键值对的方式来存储数据,键是不可重复的,值是可以重复的。jdk最早的时候jdk1.0版的时候,提供的集合是很少的,但是随着发展,到jdk1.2的时候就变多了,为了营造更多的需求,就有了集合框架。
Collection.// 简书作者:达叔小生
// 集合框架体系
Iterator
->Collection
-> Map// 简书作者:达叔小生
Collection
-> Set 无序不重复 -> 无序HashSet,需要排序TreeSet
-> List 有序可重复 -> 查,改ArrayList,增删LinkedList
Map
-> 无序 HashMap
-> 排序 TreeMap03
顶级Iterator和Collection
Collection的相关方法,可以去官方下载文档来看哦:
方法
说明
add(E e)
返回的是
boolean的类型,确保collection包含指定的元素
addAll(Collection extends E> e)
返回的是
boolean的类型,将指定collection中的所有元素添加到collection中
clear()
返回
Void,移除此collection中的所有元素
contains(Object o)
返回
boolean类型,如果此collection包含指定的元素,则返回true
containsAll(Collection> c)
返回
boolean类型,如果此collection包含指定collection中的所有元素,则返回true
equals(Object o)
返回
boolean类型,比较collection与指定对象是否相等
hashCode()
返回的是
int类型,返回此 collection 的哈希码值
isEmpty()
返回
boolean类型,如果此collection不包含元素,则返回true
iterator()
返回
Iterater,返回在此collection的元素上进行迭代的迭代器
size()
返回
Int类型,返回此collection中的元素数
Collection接口:它定义了集合体系中最共性的功能// 简书作者:达叔小生
java.util
接口 Collection// 简书作者:达叔小生
public interface CollectionCollection接口为层次结构中的根接口,由上方提供的图片得知,Collection表示为一组对象,这些对象称为Collection的元素,在这个类集合框架中,我们主要学习的为三大类,分别是集合,列表和映射。collection允许有重复的元素,有的不允许,有的是有序的,有的是无序的。java中,jdk不提供Collection接口的实现,都是由它的子接口进行实现的。Collection是List和Set的父类

List和Set也都是由再次向下,由它们的子类接口实现的。// 简书作者:达叔小生
Set 和 HashSet 为Set的实现类 使用
Iterator -> Collection -> Set -> HashSet
Iterator -> Collection -> List -> ArrayListcollection允许有重复的元素,有的不允许,有的是有序的,有的是无序的。是因为数据结构的不同。为 -> 三大类集合,列表,映射04
三大类集合,列表,映射
Set为集合,在集合中的对象是不按照顺序排列的,并且是没有重复的对象的。
简单为:无序,无重复。
List为列表,中在列表中的对象是由顺序的排序的,并且是有重复的对象。
简单为:有序,有重复。
Map为映射,在集合中的每个元素都有一个键对象和一个值对象,在Map中键是不可以重复的,值是可以重复的。
键不可重复,值可以重复;
Set为无序集合,无序无重复;List为有序集合,有序有重复;Map为映射,存储键值对,键不可重复,值可以重复;05
Collection是所有集合类的根接口,有人问那么这个呢?Collections,其实这个是集合操作的工具类。// 简书作者:达叔小生
Collection
-> Set
-> HashSet
-> LinkedHashSet
-> TreeSet
-> List
-> ArrayList
-> Vector
-> LinkedList
-> Queue
-> LinkedList
-> PriorityQueue
-> Map
-> Hashtable
-> HashMap
-> TreeMap
-> LinkedHashMap
// 简书作者:达叔小生
import java.util.List;
import java.util.ArrayList;
public class Demo{
public static void main(String args[]){
// 创建列表的实现类对象
ArrayList
Set 和 HashSet 为Set的实现类 使用// 简书作者:达叔小生
import java.util.Set;
import java.util.HashSet;
public class Demo{
public static void main(String args[]){
HashSetIterator 接口 迭代器对象
Java中的用来表示取元素的名称而已,Iterator 接口 迭代器对象用来取元素,无论是什么数据结构,最终共性的取出方式,取值是一个一个取的,在之前先要判断是否有值,如果有就取一个,如果没有就over,不取。// 简书作者:达叔小生
Iterator - > Collection -> Set - > HashSet
hasNext() next()
it.hasNext() 是否还有元素
it.next() 取出元素
Iterator -> Collection -> List -> ArrayListSet 和 HashSet 为Set的实现类 使用
// 简书作者:达叔小生
hasNext() 判断是否还有下一个元素
next() 取出这个元素,然后把游标移动到下一位
Iterator -> Collection -> Set -> HashSet// 简书作者:达叔小生
import java.util.Set;
import java.util.HashSet;
import java.util.Iterator;
public class Demo{
public static void main(String args[]){
HashSet
Iterator迭代器 iterator()// 简书作者:达叔小生
Iterator
Iterable
在此collection的元素上进行迭代iterator()可以获取具体容器中的迭代器对象
迭代器返回的是Iterator接口
方法
说明
hasNext()
返回
boolean类型,如果有元素可以迭代(取出),则返回true
next()
返回
E,返回迭代的下一个元素
remove()
返回
void,从迭代器中移除迭代器返回的最后一个元素
java.util.NoSuchElementException 没有这个元素异常it.next()// 简书作者:达叔小生
public class IteratorDemo{
public static void mian(String[] args){
// 创建集合对象
Collection collection = new ArrayList();
// 存储的是对象的引用
// 集合存储不了基本数据类型
// collection.add(12); == 内部效果 collection.add(Integer.valueOf(12); // 自动装箱
// 即在jdk1.5后,存储的是基本数据类型包装类的对象
collection.add("ab");
collection.add("bbb");
collection.add("cbbb");
collection.add("dbbbb");
// 获取迭代器 iterator()方法
Iterator it = collection.iterator();
while(it.hasNext(){
System.out.println(it.next());
}
//
//可以转变为
// for(Iterator it = collection.iterator(); it.hasNext(); ) {}
//
// 每个存储对象的长度
for(Iterator it = collection.iterator(); it.hasNext(); ){
// 取出对象
Object object = it.next();
// 向下转型,才能使用元素的特殊方法
String str = (String)object;
// 打印对象长度
System.out.println(str.length());
}
}
}// 简书作者:达叔小生
// 可以使用这个,节省内存
for(java.util.Iterator iterator = collection.iterator(){
Object object = (Object) iterator.next();
}06
// 简书作者:达叔小生
// 创建一个Student类
public class Student{
// 定义私有的String变量 name
private String name;
// 定义私有的int变量 age
private int age;
// 创建构造函数
public Student(){
super();
}
public Student(String name, int age){
super();
this.name = name;
this.age = age;
}
// 创建toString()方法
@Override
public String toString(){
return "Student [name=" + name + ", age=" + age + "]";
}
// 创建getXxx(),setXXX()方法
public String getName(){
return name;
};
public void setName(String name){
this.name = name;
}
public int getAge(){
return age;
}
public void setAge(int age){
this.age = age;
}
// equals();
@Override
public boolean equals(Object obj){
if(this == obj){
return;
}
if(! (obj instanceof Student) ){
throw new ClassCastException("类型错误");
}
Student stu = (Student)obj;
return this.name.equals(stu.name) && this.age == stu.age;
}
}
equals()方法// 简书作者:达叔小生
public class CollectionDemo {
public static void main(String[] args){
// 创建集合对象
Collection collection = new ArrayList();
// 添加元素 添加一个地址两次为重复
Student stu = new Student( "a",12 );
collection.add( stu );
collection.add( new Student("b",13) );
collection.add( new Student("c",14) );
collection.add( new Student("d",15) );
for(Iterator it = collection.iterator(); it.hasNext(); ){
Student student = (Student) it.next();
System.out.println(student.getName());
}
}
}Map 与 HashMap(Map的实现类) 的使用
Map 为映射,映射中的每个元素都有一个键对象和一个值对象,在Map中键是不可以重复的,值是可以重复的。从jdk1.2有了这个类。// 简书作者:达叔小生
java.util
Interface MapMap是一种对象,将keys键和values值建立起一种映射关系,一个map不能有重复的keys,每个key只能唯一映射到一个值。// 简书作者:达叔小生
import java.util.Map;
import java.util.HahMap;
public class Demo{
public static void main(String args[]){
HashMapMap中键是不可以重复的,值是可以重复的。如果map中添加一样的键,那么新的值会覆盖老的值。
// 简书作者:达叔小生
public interface List
// 简书作者:达叔小生
java.util
接口 List
public interface List// 简书作者:达叔小生
public class ListDemo{
public static void main(String[] args){
// List
List list = new ArrayList();
// 添加元素
list.add( new Student("a",12) );
list.add( new Student("b",13) );
list.add( new Student("c",14) );
// 插入元素
// list.add( 1, new Student("d",15) );
// list.remove(44);
// 角标越界IndexOutOfBoundsException)
// list.set( 2, new Student("dashucoding", 16) );
// 循环出对象
for(Iterator it = List.iterator(); it.hasNext(); ){
Student stu = (Student) it.next();
System.out.println(stu);
}
// 获取对象
Object obj = list.get(1);
System.out.println(obj);
// 获取对象
for(int i = 0; i
简书作者:达叔小生
90后帅气小伙,良好的开发习惯;独立思考的能力;主动并且善于沟通
简书博客: https://www.jianshu.com/u/c785ece603d1结语