今天继续学习了集合,又学习了反射,下面就跟大家分享一下:
1、集合框架包括哪些内容?
接口、实现类、算法
2、List的三个实现类,ArrayList、Vector、LinkedList各自有什么特点?
ArrayList:使用数组实现,是一组连续空间。遍历速度快,但中间插入、删除元素速度慢,是线程不安全类。
Vector:使用数组实现,遍历速度快,中间插入、删除元素速度慢,是线程安全类。
LinkedList:是一组不连续空间,采用双向链表实现。元素不仅存放数据,还要存放上一个或下一个元素地址。便利速度慢,中间删除、插入速度快。
3、Set集合有什么特点?Map集合有什么特点?
Set:元素不可重复。
Map:键值对,一个元素可以存放两个对象,键不能重复。
4、Map集合如何添加元素?Map集合如何根据键得到值?
添加元素:map.put();
Product p = map.get(3);
5、Map集合如何遍历?
Set
for(Integer key:set){
Product pro = map.get(key);
System.out.println("键:"+key+" 值:"+pro);
}
6、集合遍历的方式有哪些?
For循环、for each循环、迭代器
7、HashMap和Hashtable有什么区别?
HashMap:允许空键、空值,线程不安全。
Hashtable:不允许空键、空值,线程安全。
8、如何给List集合排序?
Collections.sort(list,new Comparator
public int compare(Product arg0, Product arg1) {
return arg0.getPrice() - arg1.getPrice();
}
});
9、狭义javaBean规范是怎样的?为什么狭义javaBean中要求有无参构造方法?
规范:1)JavaBean必须包含一个无参构造方法。 原因:方便通过反射的方式产生对象。
2)属性必须都是私有的。
3)JavaBean必须包含符合命名规范的get和set方法,以便访问JavaBean的属性。
4)JavaBean应该是可序列化的。
10、构造方法的作用是什么?
1)为对象在堆中分配空间
2)如果类没有加载,则加载类
3)初始化成员变量
4)返回引用
11、什么是反射?
在编译时,并不清楚应该加载哪个类,类的加载是在运行期间进行的,通过反射可以对类进行加载、探知、自审。
12、Class对象获取的方式有哪些?
1)类名.class
2)对象.getClass();
3)Class.forName("类全路径");
13、如何通过Class产生该类的对象?
14、如何得到一个类中的属性列表和方法列表?
Class c = Product.class;
得到该类模板中的所有的公有方法列表
Method[]ms = c.getMethods();
for(Method m:ms){
System.out.println(m.getName());//得到方法
}
//得到该类模板中所有的属性列表(包括私有属性)
Field[]fs = c.getDeclaredFields();
for(Field f:fs){
System.out.println(f.getName());//得到属性名
}
15、有这样一个类:
package com.lovo;
public class Product{
public static void main(String[] aaa){
Product p = new Product();
//here
}
}
在here处书写得到Product的Class对象的三种方式。
Product.class p.getClass() Class.forName(“package com.lovo”)