静态导入
在导包的过程中我们可以直接导入静态部分,这样某个类的静态成员就可以直接使用了。在源码中经常会出现静态导入。
静态导入格式: static
import static XXX.YYY; 导入后YYY可直接使用。
例如:Map.Entry的访问,简化后为Entry
import static java.util.Map.Entry;
publicclass HashMapTest {
publicstaticvoid main(String[] args) {
//1,创建hashmap集合对象。
Map<Student,String>map = new HashMap<Student,String>();
//取出元素。键值对方式
//Set<Map.Entry<Student, String>> entrySet = map.entrySet();
Set<Entry<Student, String>>entrySet = map.entrySet();
//for (Map.Entry<Student, String> entry : entrySet) {
for (Entry<Student, String>entry : entrySet) {
Student key = entry.getKey();
String value = entry.getValue();
System.out.println(key.toString()+"....."+value);
}
}
可变参数
对其简化成如下格式:
修饰符 返回值类型 方法名(参数类型... 形参名){ }
其实这个书写完全等价与
修饰符 返回值类型 方法名(参数类型[] 形参名){ }
只是后面这种定义,在调用时必须传递数组,而前者可以直接传递数据即可。
jdk1.5以后。出现了简化操作。... 用在参数上,称之为可变参数。
例子
publicclass ParamDemo {
publicstaticvoid main(String[] args) {
int[] arr = {21,89,32};
int sum = add(arr);
System.out.println(sum);
sum = add(21,89,32);//可变参数调用形式
System.out.println(sum);
}
//JDK1.5之后写法
publicstaticint add(int...arr){
int sum = 0;
for (int i = 0; i < arr.length; i++) {
sum += arr[i];
}
return sum;
}
l 上述add方法在同一个类中,只能存在一个。因为会发生调用的不确定性
注意:如果在方法书写时,这个方法拥有多参数,参数中包含可变参数,可变参数一定要写在参数列表的末尾位置。
Collections集合工具类
l public static <T> void sort(List<T> list) // 集合元素排序
//排序前元素list集合元素 [33,11,77,55]
Collections.sort( list );
//排序后元素list集合元素 [11,33,55,77]
l public static void shuffle(List<?> list) // 集合元素存储位置打乱
//list集合元素 [11,33,55,77]
Collections.shuffle( list );
//使用shuffle方法后,集合中的元素为[77,33,11,55],每次执行该方法,集合中存储的元素位置都会随机打乱
集合嵌套
集合嵌套并不是一个新的知识点,仅仅是集合内容又是集合,如Collection集合嵌套、Collection集合与Map集合相互嵌套、Map集合嵌套。
l ArrayList嵌套 ArrayList
ArrayList< ArrayList<String>>
Collection< ArrayList<Integer>>
l Map嵌套 ArrayList
HashMap<String, ArrayList<Person>>
ArrayList< HashMap<String, String>>
l Map集合嵌套
HashMap<String, HashMap<String,String>>
HashMap<String, HashMap<Person,String>>
实例
HashMap<String,HashMap<person,String>>
map=new HashMap<String,HashMap<person,String>>();
HashMap<person,String> m1=
new HashMap<person,String>();
m1.put(new person("王亿",22),"java1203班");
m1.put(new person("张原硕",22),"java1203班");
m1.put(new person("骚猪",23),"java0929班");
m1.put(new person("张总强",24),"java0929班");
map.put("oracle", m1);
map.put("qianghu",m2);
//keyset+增强for
Set<String> schools=map.keySet();
//biali
for(String school:shools){
//根据学校名称获取班级名称
HashMap<person,String> classes=map.get(school);
//获取该班级的所有人set
set<person> persons=classes.keySet();
//遍力集和set得到的每一个人
for(person p:persons){
//根据每一个人得到所有对应的班级名称
String classname=classes.get(p);
System.out.println(
"班级名称为"+school+"班级名we"+classname+"姓名热"+p.getName()+"nailingwei"+p.getAge()
);
}
}