Java——File类,Set类,Map类

File类简介

定义

所谓File类就是对文件进行一系列操作的方法的集合。比如有:创建文件、文件夹;删除文件、文件夹;重命名;判断是否存在;获取最后一次修改时间,等等。

代码实现

package com.Gyn;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class File1 {

    public static void main(String[] args) throws IOException {
        test8();
    }
    //新建文件
    public static void test1() throws IOException {
        File f1=new File("D:\\HA.txt");
        boolean createNewFile = f1.createNewFile();
        System.out.println(createNewFile);
    }
    //删除文件
    public static void test2() throws IOException {
        File f1=new File("D:\\HA.txt");
        boolean delete = f1.delete();
        System.out.println(delete);
    }
    //新建文件夹    (若要删除文件夹,必须先删除里面的子文件)
    public static void test3() throws IOException {
        File f1=new File("D:\\HA");
        boolean mkdir = f1.mkdir();
        System.out.println(mkdir);
    }
    //重命名文件夹
    public static void test4() throws IOException {
        File f1=new File("D:\\HA");
        File f2=new File("D:\\VBA");
        boolean renameTo = f1.renameTo(f2);
        System.out.println(renameTo);
    }
    //判断是否为目录(文件夹)   
    public static void test5() throws IOException {
        File f1=new File("D:\\VBA");
        boolean directory = f1.isDirectory();
        System.out.println(directory);
    }
    //判断是否存在
    public static void test6() throws IOException {
        File f1=new File("D:\\VBA");
        boolean exists = f1.exists();
        System.out.println(exists);
    }
    //获取最后一次的修改时间
    public static void test7() throws IOException {
        File f1=new File("D:\\VBA");
        long time = f1.lastModified();
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String format = sdf.format(new Date(time));
        System.out.println(format);
    }
    //获取指定文件夹下的子文件名称(list)
    public static void test8() throws IOException {
        File f1=new File("D:\\VBA");
        String[] list = f1.list();
        for(String s:list) {      //for循环增强版
            System.out.println(s);
        }
    }
    //listFiles输出格式为File
    public static void test9() throws IOException {
        File f1=new File("D:\\VBA");
        File[] listFiles = f1.listFiles();
        for(int i=0;i<listFiles.length;i++) {     
            File f=listFiles[i];
            System.out.println(f);
        }
    }
}

Set类简介

Java中的Set类继承了Conllection类,是一种集合类。Set类中不允许重复对象,而且其中的对象不按特定的方式排序。
Set类主要有以下几个实现类。(1)HashSet类按照哈希算法来存取集合中的对象,存取速度比较快。Java.util.HashSet类实现了Java.util.Set接口,它不允许出现重复元素;不保证和政集合中元素的顺序;允许包含值为null的元素,但最多只能有一个null元素。(2)LinkedHashSet集合同样是根据元素的hashCode值来决定元素的存储位置,但是它同时使用链表维护元素的次序,保持元素的添加顺序。LinkedHashSet在迭代访问Set中的全部元素时,性能比HashSet好,但是插入时性能稍微逊色于HashSet。(3)TreeSet类实现了SortedSet接口,能够对集合中的对象进行排序。TreeSet描述的是Set的一种变体——可以实现排序等功能的集合,它在讲对象元素添加到集合中时会自动按照某种比较规则将其插入到有序的对象序列中。

代码实现

package com.Gyn;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;

public class SetClass {

    public static void main(String[] args) {
        test3();
    }
    //HashSet:1.无序,2.重写HashCode()和equals()防止重复
    public static void test1() {
        Set<String> s=new HashSet<String>();
        s.add("鸣人");
        s.add("路飞");
        s.add("史蒂夫");
        Iterator<String> iterator = s.iterator();
        while(iterator.hasNext()) {
            System.out.println(iterator.next());
        }

    }
    /**
     * TreeSet:按自然顺序排列
     * 1.数字(1,2,3,4)
     * 2.字母(a,b,c,d)
     */
    public static void test2() {
        Set<Integer> s=new TreeSet<Integer>();
        s.add(1);
        s.add(3);
        s.add(5);
        s.add(2);
        Iterator<Integer> iterator = s.iterator();
        while(iterator.hasNext()) {
            System.out.println(iterator.next());
        }
    }
    //泛型引用Person类
    public static void test3() {
        Set<Person> s=new TreeSet<Person>();  //多态,父类引用子类对象
        Person p1=new Person("Bush");
        Person p2=new Person("Aush");
        Person p3=new Person("Vush");
        Person p4=new Person("Gush");
        Person p5=new Person("Gush");   //Person类中重写了,防止重复
        s.add(p1);
        s.add(p2);
        s.add(p3);
        s.add(p4);
        s.add(p5);
        //用迭代器遍历输出
        Iterator<Person> iterator = s.iterator();
        while(iterator.hasNext()) {
            System.out.println(iterator.next());
        }
    }

}
  • test3()调用的person类
package com.Gyn;
/**
 *Person类实现Comparable接口
 */
public class Person implements Comparable<Person>{
/**
 * Comparable接口:定义排序的规范(例如:按名字首字母排序,test3)
 */
    @Override
    public int compareTo(Person p) {
        return this.name.compareTo(p.name);  //自己的名字和其他名字比较
    }
    String name;

    public Person() {
        super();
    }
    public Person(String name) {
        super();
        this.name = name;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    //重写toString,定义输出格式
    @Override
    public String toString() {
        return "Person [name=" + name + "]";
    }
    //重写HashCode和Equals
    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((name == null) ? 0 : name.hashCode());
        return result;
    }
    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        Person other = (Person) obj;
        if (name == null) {
            if (other.name != null)
                return false;
        } else if (!name.equals(other.name))
            return false;
        return true;
    }

}

Map类简介

java.util 中的集合类包含 Java 中某些最常用的类。 最常用的集合类是 List 和 Map。 List 的具体实现包括 ArrayList 和 Vector,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象的元素列表。 List 适用于按数值索引访问元素的情形。
Map 提供了一个更通用的元素存储方法。 Map 集合类用于存储元素对(称作“键”和“值”),其中每个键映射到一个值。 从概念上而言,您可以将 List 看作是具有数值键的 Map。 而实际上,除了 List 和 Map 都在定义 java.util 中外,两者并没有直接的联系。本文将着重介绍核心 Java 发行套件中附带的 Map,同时还将介绍如何采用或实现更适用于您应用程序特定数据的专用 Map。

代码实现
package com.Gyn;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
import java.util.Map.Entry;

public class TestMap {

    public static void main(String[] args) {
        test3();
    }
    //映射HashMap
    public static void test1() {
        HashMap<Integer,Integer> h1=new HashMap<Integer,Integer>();
        h1.put(1,2);
        h1.put(2,4);
        h1.put(3,6);
        System.out.println("size="+h1.size());
        System.out.println(h1.get(1));
        System.out.println(h1.get(2));
        System.out.println("----------");
        HashMap<String,String> h2=new HashMap<String,String>();
        h2.put("海贼王", "路飞");
        h2.put("火影忍者","鸣人");       
        h2.put("火影忍者", "佐助");       //一对一。若重复会替换之前的
        System.out.println(h2.get("火影忍者"));
        System.out.println(h2.get("海贼王"));
    }
    //得到键
    public static void test2() {
        HashMap<Integer,String> h=new HashMap<Integer,String>();
        h.put(1, "卡西欧");
        h.put(2, "梅长苏");
        h.put(3, "苏烈");
        Set<Integer> keySet = h.keySet();
        Iterator<Integer> it = keySet.iterator();
        while(it.hasNext()) {
            Integer key = it.next();
            String value=h.get(key);
        System.out.println(""+key+"   "+value);
        }
    }
    //同时得到键和值(Entry)
    public static void test3() {
        HashMap<Integer,String> h=new HashMap<Integer,String>();
        h.put(1, "卡西欧");
        h.put(2, "梅长苏");
        h.put(3, "苏烈");
        Set<Entry<Integer,String>> entrySet = h.entrySet();
        Iterator<Entry<Integer, String>> iterator = entrySet.iterator();
        while(iterator.hasNext()) {
            Entry<Integer, String> next = iterator.next();
            Integer key = next.getKey();
            String value = next.getValue();
            System.out.println("key="+key+"  value="+value);
        }

    }
}

轻松趣图

学习这么久,也该放松放松了,找了几张IT趣图,希望可以逗君一笑,O(∩_∩)O哈哈~

1. 新手程序员第一次做项目的过程

这里写图片描述

2. 客户要求 VS 客户预算

这里写图片描述

3.刚写了一段代码,第一次运行……

这里写图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值