黑马程序员--泛型和Collections使用

来源:互联网 发布:js url encode utf8 编辑:程序博客网 时间:2024/05/22 05:05

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

 

1、泛型<>

泛型用的最多是集合框架
因为在定义集合时,在容器里是要指定加什么样的类型进去,比如是String ,Integer等等,

泛型的理解:当你用到集合框架里面创建了一个容器,这个容器要指定传什么类型的内容,如果没有注明的话,在编译的时候会出现安全问题

泛型有以下几种:
泛型类,定义在类上
也可以定义在方法上,泛型是放在返回值的前面,也就是(void 前面)
泛型接口


例1(现在我们把泛型定义在方法上)
class Student
{
public <T>void show(T t)
{
System.out.println(t);
}
public <Q>void print(Q q)
{
System.out.println(q);
}

}

class Teacher extends Student
{
public static void main(String[] args)
{

                Student s=new Student();
                s.show("abcd");字符串
                s.show(123);整数
   
                s.print("abcdddddd");
                s.print(888888888);


}


}
答案:abcd
      123
      abcdddddd
      888888888
当我们把泛型定义在方法上的话,里面可以添加各种数据类型


/*
//例2,在类上定义泛型:
class Student<T>
{
public void show(T t)
{
System.out.println(t);
}
public <Q>void print(Q q)
{
System.out.println(q);
}

}

class Teacher extends Student
{
public static void main(String[] args)
{

               Student s=new Student();
                s.show("abcd");//字符串
                s.show(123);//整数


          
        
}


}

答案:编译失败,因为在show方法上没有定义泛型,泛型给定义到类上去了,出现这种情况应该这样定义。
        传入字符串就用下面
          Student<String> s=new Student<String>();
                        s.show("abcd");//字符串
         要传入数字就用下面
                       Student<Integer> s=new Student<Integer>();
    s.show(456);

*/

//例3:用到静态方法

class Student<T>
{
public static void show(T t)
{
System.out.println(t);
}
public <Q> void print(Q q)
{
System.out.println(q);
}

}

class Teacher extends Student
{
public static void main(String[] args)
{

               Student<String> s=new Student<String>();
                s.show("abcd");  //字符串
             
                 
}


}

答案: 错误: 无法从静态上下文中引用非静态,
       原因是静态方法不可以访问类上定义的泛型,只能把泛型定义在静态方法上

 

2、Collections

关于Collections是针对collection集合操作的工具类

那么Collection和Collections的区别
Collection 是单列集合的顶层父接口,它定义了单列集合collection的共性方法
Collections 是一个类,它定义了用于操作Collection的功能,有以下的一些操作,

fill 替换
swap 对换
replace 代替
sort 排序
reveser反转
Max 最值


import java.util.*;

class CollectionsDemo1
{

public static void main(String[] args)
 {
 sort();
}

public static void sort()
 {
 
 List<String> li=new ArrayList<String>();
            li.add("abc");
     li.add("aaa");
     li.add("b");
     li.add("aa");
 
 //sop(li);
 //Collections.sort(li);//排序,按照自然顺序排
 //Collections.fill(li,"qq");//将集合里所有元素替换为qq
 // Collections.swap(li,2,3); //使用索引将位置互换
 //Collections.shuffle(li)//随机排序
     Collections.reverse(li);//reverse,将元素进行反转
 sop(li);


 
 
 }

public static void sop(Object obj)  
 {
System.out.println(obj);
}

}
     

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------

 

0 0