发表时间:2022-03-25来源:网络
学习主题:容器
对应视频:
http://www.itbaizhan.cn/course/id/85.html
(1) Vector的特有方法
1、 public void addElement(E obj)将指定的组件添加到此向量的末尾。2、 public E elementAt(int index)返回指定索引处的组件。此方法的功能与 get(int) 方法的功能完全相同(后者是 List 接口的一部分)。3、 public Enumeration elements()返回此向量的组件的枚举。返回的 Enumeration 对象将生成此向量中的所有项。生成的第一项为索引 0 处的项,然后是索引 1 处的项,依此类推。(2) Vector与ArrayList的区别
底层数据结构相同,都是object类型的数组
1、 Vector 的add()方法是同步方法,ArrayList的add()方法是非同步方法2、 Vector扩容每次扩充1倍,ArrayList每次扩充0.5倍3、 Vector是在调用构造方法时,直接初始化容量为10,ArrayList是在第一次调用添加方法时,初始化容量为104、 Vector的版本是JDK1.0,ArrayList的版本为JDK1.25、 Vector是线程同步的,安全性高,效率低,ArrayList是线程非同步的,安全性能低,效率高(1) Map接口常用的方法
1、 实现Map接口的类用来存储键(key)—值(value)对2、 Map接口的实现类有HashMap 和TreeMap等3、 Map类中存储的键-值对通过键来标识,随意键不能重复Map接口常用的方法:
put() 添加元素remove() 移除元素 先输出后移除keyset() 获取所有key的集合values() 获取所有value的集合entrySet() 获取所有key-value关系的集合(2) HashMap与Hashtable的异同?
1、 版本不同 HashMap JDK1.2 Hashtable JDK1.02、 HashMap继承了AbstractMap,实现了Map接口,Hashtable继承了Dictionary实现Map接口3、 HashMap允许null值和null键,但是null作为key值允许一个,Hashtable非null的键和值4、 HashMap是线程不同步的(效率高,安全性低),Hashtable 线程同步(效率低,安全性高)(1) HashMap的底层数据结构
HashMap 底层实现采用了哈希表数据结构,哈希表的本质就是“数组+链表”
(2) 简述哈希表的去重原理
1、 计算Integer类型对象的HashCode值2、 根据y=k(x)函数,计算存储位置,x是HashCode值,y是存储的位置3、 如果该位置上有元素,需要调用equals(…)方法比较元素的内容是否相同,如果不相同,使用链表链接,如果相同则不再添加
(1) 树的概念和特征
1、 树是由一个集合以及在该集合上定义的一种关系构成的。集合中的元素称为输的节点,所定义的关系称为父子关系。2、 父子关系在树的结点之间建立了一个层次结构。3、 树的结点包含了一个数据元素及若干指向其子树的若干分支。4、 在这种乘次结构中有一个结点具有特殊的地位,这个结点称为该树的根结点,或称为树根。
(1) TreeMap的常用构造方法
put()——集合中添加元素containsKey()——判断集合中键是否存在containsValue()——判断集合中值是否存在get(key)——根据键获取值(2) TreeMap的底层数据结构是红黑树
(1) Set集合存储元素的特征是唯一、 无序
HashSet底层数据结构是hash表,主结构是数组+链表
(2) Set接口常用的子类
1、HashSet : 内部数据结构是哈希表, 是不同步的2、LinkedHashSet : 存入和取出的顺序一致(有序)3、TreeSet : 可以对 Set 集合中的元素进行排序, 是不同步的.(1) HashSet的底层数据结构概念
HashSet底层数据结构是hash表,主结构是数组+链表
(2) HashSet与HashMap的关系
HashSet使用了HashMap的数据结构创建HashSet时,底层创建的是一个HashMap对象(1) TreeSet的底层数据结构是TreeMap,TreeMap的底层数据是红黑树
在存储自定义元素时要求必须具备比较规则
(2) TreeSet集合的特点是唯一,,有序,,升序
(1) 为什么需要泛型?使用泛型的好处有哪些?
JDK1.4以前类型不明确:装入集合的类型都被当作Object对待,从而失去自己的实际类型。从集合中取出时往往需要转型,效率低,容易产生错误。解决办法:在定义集合的同时定义集合中对象的类型
优点:增强程序的可读性和安全性
(2) 泛型的分类
1、 泛型类
泛型类型用于类的定义中,被称为泛型类。通过泛型可以完成对一组类的操作对外开放相同的接口。最典型的就是各种容器类,如:List、Set、Map。



2、 泛型接口
泛型接口与泛型类的定义及使用基本相同。泛型接口常被用在各种类的生产器中


3、 泛型方法
泛型方法,是在调用方法的时候指明泛型的具体类型

(1) 泛型的高级应用分两类
泛型的上限:使用关键字extends,表示参数化的类型可能是所指定的类型或者是此类型的子类
泛型的下限:使用关键字super进行声明,表示参数化的类型可能是所指定的类型,或者四此类型的父类型,直至object类
(2) 为泛型添加上限,即传入的类型实参必须是指定类型的子类型

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
public class TestList {
public static void main(String[] args) {
test01();
test02();
test03();
}
public static void test01(){
Collection c = new ArrayList();
System.out.println(c.size());
System.out.println(c.isEmpty());
//添加元素
c.add("高老大");
c.add("高老二");
System.out.println(c);
System.out.println(c.size());
//判断元素是否存在
System.out.println(c.contains("高老五"));
//转换为一个数组
Object[] objs = c.toArray();
System.out.println(objs);
//移除元素
c.remove("高老二");
System.out.println(c);
//清空所有的元素
c.clear();
System.out.println(c);
}
public static void test02(){
List list01 = new ArrayList();
list01.add("aa");
list01.add("bb");
list01.add("cc");
List list02 = new ArrayList();
list02.add("aa");
list02.add("dd");
list02.add("ee");
System.out.println("list01:"+list01);
// list01:[aa, bb, cc]
//list01.addAll(list02);
//把list02的元素添加到list01中 list01:[aa, bb, cc, aa, dd, ee]
//list01.removeAll(list02);
//移除list01中的和list02相同的元素 list01:[bb, cc]
list01.retainAll(list02);
//取两个的交集 list01:[aa]
System.out.println("list01:"+list01);
System.out.println(list01.contains(list02));
//判断list01 中是否包含了list02 的所有元素 false
}
public static void test03(){
List list = new ArrayList();
list.add("A");
list.add("B");
list.add("C");
list.add("D");
System.out.println(list);
list.add(2, "高淇");//在指定位置添加元素
System.out.println(list);
list.remove(2);//移除指定位置的元素
System.out.println(list);
list.set(2, "高老二");//替换指定位置的元素
System.out.println(list);
System.out.println(list.get(2));//获取指定位置的元素内容
list.add("C");
list.add("B");
list.add("A");
System.out.println(list);
System.out.println(list.indexOf("B"));//获取元素首次出现的位置,若不在,返回-1
System.out.println(list.lastIndexOf("B"));//获取元素最后一次出现的位置,若不在,返回-1
}
}
皓盘云建最新版下载v9.0 安卓版
53.38MB |商务办公
ris云客移动销售系统最新版下载v1.1.25 安卓手机版
42.71M |商务办公
粤语翻译帮app下载v1.1.1 安卓版
60.01MB |生活服务
人生笔记app官方版下载v1.19.4 安卓版
125.88MB |系统工具
萝卜笔记app下载v1.1.6 安卓版
46.29MB |生活服务
贯联商户端app下载v6.1.8 安卓版
12.54MB |商务办公
jotmo笔记app下载v2.30.0 安卓版
50.06MB |系统工具
鑫钜出行共享汽车app下载v1.5.2
44.7M |生活服务