泛型- Collections工具类- file类

目录

泛型

Collections工具类

File类


泛型

概念:特指某一种类型,防止数据的向上转型,使用过程中不用在向下转型类,简化操作

  1. 泛型的语法: <引用类型>,注意泛型不支持基本类型

  2. 泛型使用的范围:1、集合中 2、类和接口中 3、方法中

  3. 使用的语法:集合<数据类型:引用类型>:告诉JVM这个集合中只放这种类型的数据

  4. 泛型的嵌套:泛型里面可以包含泛型,<Map.Entry<String, String>>,外层泛型是Entry,内层泛型(嵌套泛型)是:String,String

泛型的上限和下限

<? extends 具体引用类型>:?表示任意类型,表示?的类型的上限是指定的类型

<? extends Number>: 表示类型上限Number

<? super 具体引用类型>:泛型的下限

ArrayList list = new ArrayList(); // 没有使用泛型,这个集合所有类型都会向上转型为Object
ArrayList<Integer> list1 = new ArrayList<Integer>(); // 使用泛型
list.add("abc"); // 使用泛型以后集合有检查机制  这里会报错
HashMap<String, String> hm = new HashMap<>(); // 键值对都是String类型
hm.put("abc","123");
hm.put("bbc","132");
hm.put("cbc","231");

作用:

例:设计一个表示坐标的类 Pointer

class Pointer { private int x; // 横坐标 private int y; // 纵坐标

}

注意这里这个类的坐标只能用int,如果又想用double类型的就又需要重新创建一个类

class Pointer2 { private double x; // 横坐标 private double y; // 纵坐标 }

注:以上的类属性的数据类型不能确定,所有需要书写很多类,使用泛型类来处理

规范:

在Java中表示数据类型的符号(只能用于泛型)

规范的写法应该是使用一些字母(常见的字母):

E Element 元素:形参使用,任意的数据类型 T Type 类型,类,接口,方法上使用 K Key 键, V Value 值 也可以支持多个泛型参数例如Map<K,V>

  • 使用泛型在类上

class Pointer<T> { // 泛型类,T表示任意的数据类型
    private T x; // 横坐标
    private T y; // 纵坐标
​
    // T的使用范围:在整个类的非static修饰的方法中使用
}
  • 使用泛型在方法上

// 设计一个方法用来合并两个数组
public static int[] merge(int[] arr1,int[] arr2) {
​
}
public static double[] merge(double[] arr1,double[] arr2) {
​
}
// 以上方法,参数的数据类型不确定,所以使用泛型方法来处理
​
// 泛型在方法中泛型放在方法的返回值类型之前
    public static <T>T[] merge(T[] arr1, T[] arr2) {
        int len = arr1.length; // arr数组长度
        arr1 = Arrays.copyOf(arr1,arr1.length + arr2.length); // 扩容arr1长度
        System.arraycopy(arr2,0,arr1,len,arr2.length);//将arr2数组中的元素赋给arr1
        return arr1;
    }

Collections工具类

概念:Collections是操作Collection集合的工具类,全部是类方法

方法:

  1. addAll(Collection<? super T> c, T... elements) 将所有指定的元素添加到指定的集合。

ArrayList<Integer> list = new ArrayList<>();// 泛型,只能装integer类的元素
Collections.addAll(list,10,20,30,40,50,60); // 向list集合加入数据
System.out.println(list);
  1. binarySearch(List<? extends Comparable<? super T>> list, T key):使用二分查找查询集合中元素的位置

int i = Collections.binarySearch(list, 30); // 需要对元素进行排序
System.out.println(i); // 打印2 
  1. fill(List<? super T> list, T obj) :填充集合

  2. max(Collection<? extends T> coll) :找出集合中最大的值 最小值同理

Integer max = Collections.max(list);
System.out.println(max);
  1. reverse(List<?> list) :翻转集合元素

Collections.reverse(list); 
System.out.println(list); 
  1. shuffle(List<?> list):洗牌方法,打乱list集合中元素的顺序

Collections.shuffle(list);
System.out.println(list);
  1. sort(List<T> list) :对list集合元素进行排序

  2. swap(List<?> list, int i, int j) :交换集合中指定位置的元素

File类

概念:File:就是表示你要操作的文件或文件夹

  1. 字段(属性)

    目录分割符(一个路径里面的):/ 路径分隔符:(多个路劲之间的分割); pathSeparator:路径分割符,;

    // e:/pp/lw.avi;e:/cc/lw.avi

    separator:目录分割符

  2. 构造方法

    1)、File(String pathname):通过传入的路径创建File对象                                              2)、File(String parent, String child):在指定符目录下面,创建子目录或文件 parent:只能表示文件夹 child:可以是文件夹,也可以是文件                                                             3)、File(File parent, String child)

  3. 常用的方法

    1)、表示判断方法 isDirectory() :判断file对象是否为文件夹(目录),必须要存在 isFile():判断file对象是否为文件 exists():判断file对象是否存在

    2)、获取名字的方法 getName() :获取名字 getParent():获取符目录 getPath():File转换为字符串的路径

    3)、创建与删除 mkdir():只能创建一级目录 、 mkdirs() 可以创建多级目录:创建文件夹 createNewFile():创建的是空文件 delete():删除文件和空文件夹

    4)、将制定文件夹中所有的文件或文件都获取 list():将制定目录下所有的文件和文件夹的名字,放入一个字符串数组 listFiles():将制定目录下所有的File对象,放入一个File数组

文件的相关基础:

  • 文件:保存数据的,文件间区分,使用后缀名区分

注:文件用来保存数据的,文件不能再包含文件,文件能读写操作,文件夹不行!!!

怎样找到一个文件?通过文件的路径来找到文件

文件的路径:

1)、绝对路径:从盘符开始的路径

e:/1.txt:绝对路径

2)、相对路径,没有从盘符开始的路径

1.txt:相对路径,相对你正在操作的文件路径

  • 文件夹:管理文件或文件夹的,文件夹里面可以有文件夹和文件

  • 怎样区分一个路径是文件夹还是文件:

    1)、e:/pp/cc/lw.avi:表示是文件,因为有后缀名

    2)、e:/pp/cc:表示的是文件夹

  • 一个文件夹或文件的组成:目录 + 名字

    1)、 e:/pp/cc/lw.avi 路径

    2)、e:/pp/cc/:文件的目录

    3)、lw.avi:文件名

  • 文件或文件的操作

    1)、创建文件、删除文件、复制文件、剪切文件

  • 15
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zyangxsir

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值