2018.6.11 集合和泛型的课后练习总结
Posted qichunlin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2018.6.11 集合和泛型的课后练习总结相关的知识,希望对你有一定的参考价值。
介绍Set接口和List接口的区别 提及 介绍Map接口
Collection表示一组对象,这些对象也称为collection的元素;一些 collection允许有重复的元素,而另一些则不允许;一些collection是有序的,而另一些则是无序的;JDK中不提供此接口的任何直接实 现,它提供更具体的子接口(如 Set 和 List)实现;Map没有继承Collection接口,Map提供key到value的映射;一个Map中不能包含相同key,每个key只能映射一个value;Map接口提供3种集合的视图,Map的内容可以被当做一组key集合,一组value集合,或者一组key-value映射;
List和Set接口自Collection接口,而Map不是继承的Collection接口
List接口
元素有放入顺序,元素可重复
List接口有三个实现类:LinkedList,ArrayList,Vector
基于Array的List(Vector,ArrayList)适合查询,而LinkedList(链表)适合添加,删除操作
##2.JAVA中Collection和Collections的区别
Collections是个java.util下的类,它包含有各种有关集合操作的静态方法。
Collection是个java.util下的接口,它是各种集合结构的父接口。
Collection是集合框架中的一个顶层接口,它里面定义了单列集合的共性方法。
它有两个常用的子接口,List:对元素都有定义索引。有序的。可以重复元素;Set:不可以重复元素。无序。
2.1 java.util.Collections 是一个包装类。 这个类不能被实例化
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Test {
public static void main(String args[]) {
//注意List是实现Collection接口的
List list = new ArrayList();
int array[] = {5, 1, 3, 4, 2};
for (int i = 0; i < array.length; i++) {
list.add(array[i]);
}
Collections.sort(list);
for (int i = 0; i < array.length; i++) {
System.out.println(list.get(i)); // 结果:1 2 3 4 5
}
}
}
具体来看下Collections中的sort方法:(以下代码摘自Collections类中源码)
public static <T extends Comparable<? super T>> void sort(List<T> list) {
Object[] a = list.toArray();
Arrays.sort(a);
ListIterator<T> i = list.listIterator();
for (int j=0; j<a.length; j++) {
i.next();
i.set((T)a[j]);
}
}
3.请简要介绍使用泛型的好处
·泛型简单易用
·类型安全 泛型的主要目标是实现java的类型安全。 泛型可以使编译器知道一个对象的限定类型是什么,这样编译器就可以在一个高的程度上验证这个类型
·消除了强制类型转换 使得代码可读性好,减少了很多出错的机会
J·ava语言引入泛型的好处是安全简单。泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。
3.1 泛型的实现原理
泛型的实现是靠类型擦除技术 类型擦除是在编译期完成的 也就是在编译期 编译器会将泛型的类型参数都擦除成它的限定类型,如果没有则擦除为object类型之后在获取的时候再强制类型转换为对应的类型。 在运行期间并没有泛型的任何信息,因此也没有优化。
以上是关于2018.6.11 集合和泛型的课后练习总结的主要内容,如果未能解决你的问题,请参考以下文章
Java之collection集合常见数据结构List和泛型