第八章集合(容器)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
容器指的是“可以容纳其他对象的对象”,这种说法对吗?

Collection/Set/List 的联系跟区别?
• Collection 接口存储一组不唯一,无序的对象
• List 接口存储一组不唯一,有序(索引顺序)的对象
• Set 接口存储一组唯一,无序的对象

Set 和 List 的特点跟区别?
Set元素不能重复 linkedhashSet 根据添加顺序排序 treeSet根据自然顺序排序 没有索引 和collection的方法一样

List元素可以重复 list根据索引排序 arraylist按索引遍历效率高 但是增删效率低下移动元素 linkedList可以实现栈和队列的应用 linkedList增删效率高,反而遍历效率低下 和collection比添加了索引方法

【上机】下面的代码,效果一致吗? 分析说明之。

Collection c = new HashSet();

Collection c2 = new HashSet();

Apple a = new Apple();

c.add(a);

c2.addAll(c);  

//增加另一个容器中所有的元素!       

Collection c = new HashSet();

Collection c2 = new HashSet();

Apple a = new Apple();

c.add(a);

c2.add(c);

不一致

后一个是将c对象作为元素整体添加在c2中

addAll()方法是将目标对象里边所有的元素添加到c2容器中

想取两个容器中元素的交集,使用哪个方法?
Contains()

说明 isEmpty 的作用,并说明下面代码有问题吗?
判断引用类型是否为空,若空返回true不空返回false
空指针异常,有问题

Collection c = null;
System.out.println(c.isEmpty());

我想定义一个数组。该数组既可以放:Dog 对象、也可以放 Cat 对象、还可以放Integer 对象,怎么定义?

Collection<Object> c = new LinkedList<Object>();

c.add(new Integer(44));

c.add(new Dog());

c.add(new Cat());

List 接口中增加了一些与顺序相关的操作方法,下面两个方法的作用是什么?
add(int index, E element) , get(int index)

add是在index索引处添加一个新元素element

get是获得index索引处的 元素

ArrayList 底层使用什么来实现的? LinkedList 是用什么实现的?
ArrayList底层是用顺序表数组来实现的,LinkedList是用链表来实现的

说出 ArrayLIst、LinkedList、Vector 的区别。
arraylist 和 linkedlist 是线程不安全。vector 线程安全。
arraylist 存储结构 是 连续的。
linkedlist 是链式存储。 数据结构不一致。

我有一些数据,需要频繁的查询,插入和删除操作非常少,并且没有线程之间的共享,使用 List 下面的哪个实现类好一些?
ArrayList()方法好

【上机】针对 List 中新增的有关顺序的方法,每个都进行测试。并且使用 debug来帮助我们理解程序运行。

List<Integer> list=new ArrayList<Integer>();

list.add(44);

list.add(45);

list.add(23);

System.out.println(list);

list.add(1, 88);

System.out.println(list);

System.out.println(list.get(3));

List<Integer> list1=new ArrayList<Integer>();

list1.add(33);

list1.add(22);

list.addAll(list.size()-1,list1);

System.out.println(list);

System.out.println(list.indexOf(33));

定义 Computer 类,使用价格排序。(使用 Comparable 接口)
equals 返回 true,hashcode 一定相等吗?
equals相等,则hashcode一定相等,反之则不然。

HashSet 和 TreeSet 的区别
HashSet:

存储结构:采用hashtable哈希表存储结构
优点: 添加,查询,删除快
缺点: 无序     
     TreeSet:

存储结构:二叉树
优点:有序,查询速度快于list,慢于HashSet

使用HashSet存储自定义对象,为什么需要重写hashCode()和equals()?
在这里插入图片描述

使用TreeSet存储多个学生数据,实现按照不同属性值进行排序?

Map 中,key 能否重复?如果重复,会有什么现象?
不可以重复
key 无序且唯一,添加重复的key不报错,会直接覆盖
Set 和 Map 的集合类名称相似,有没有内在的联系?
Hashmap和HashSet 都采用哈希表结构,需要用到hashCode哈希码和equals方法

使用泛型有什么好处?
泛型是javaSE的新特性,本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。java引入泛型的好处是安全简单,增强程序的可读性和安全性

采用增强 for 循环遍历 List 或者 Set,如果 List 或者 Set 没有加泛型,能遍历吗?

如果我想在遍历时删除元素,采用哪种遍历方式最好?
Iterator接口,接口有remove方法

Iterator 是一个接口还是类?
接口

Collection 和 Collections 有什么区别?
• Collection是Java提供的集合接口,存储一组不唯一,无序的对象。它有两个子接口List和Set。
• Java中还有一个Collections类,专门用来操作集合类 ,它提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。

资源文件有什么作用?

Vector 和 ArrayList 的区别联系
• 实现原理相同,功能相同,都是长度可变的数组结构,很多情况下可以互用
两者的主要区别如下
• Vector是早期JDK接口,ArrayList是替代Vector的新接口
• Vector线程安全,效率低下;ArrayList重速度轻安全,线程非安全
• 长度需增长时,Vector默认增长一倍,ArrayList增长50%

Hashtable 和 HashMap 的区别联系
• 实现原理相同,功能相同,底层都是哈希表结构,查询速度快,在很多情况下可以互用
•两者的主要区别如下
• Hashtable是早期JDK提供的接口,HashMap是新版JDK提供的接口
• Hashtable继承Dictionary类,HashMap实现Map接口
• Hashtable线程安全,HashMap线程非安全
• Hashtable不允许null值,HashMap允许null值

Java 主要容器的选择依据和应用场合
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值