首页 > 其他分享 >0729~0802

0729~0802

时间:2024-08-02 22:55:42浏览次数:13  
标签:map String 0729 System 0802 println new out

Map键值对

map<k,v>

Map中的集合不能包含重复的键,值可以重复;每个键只能对应一个值

map常用方法

map.put()//添加键和值

//        put 插入键值对
//        map中 值可以重复 但是键不可以重复 如果重复 后面会覆盖前面的

map.putAll()//添加整个键值对

map.get()//查询

boolean containsKey(Object key)//判断键值是否存在返回true false

boolean containsValue(Object value)//判断value是否存在返回true false

boolean isEmpty()//是否为空

public static void main(String[] args) {
        Map<String, String> map = new HashMap<>();
        Map<String, String> map1 = new HashMap<>();
        map.put("a", "1");
        map.put("c", "2");
        map.put("d", "3");
        map.put("b", "4");
        System.out.println(map);
        map1.put("e","9");
        map1.putAll(map);
        System.out.println(map1);
        System.out.println("*********************");
        map.remove("a");
        map1.clear();
        System.out.println(map);
        System.out.println(map1);
        System.out.println(map.get("c"));
        System.out.println(map.containsKey("a"));//判断key是否存在
        System.out.println(map.containsValue("3"));//判断Value是否存在
        System.out.println(map1.isEmpty());//判断是否为空
    }

HashMap和Hashtable

public static void main(String[] args) {
        //HashMap
        //是线程不安全的,并允许使用 null 值和 null 键。
        Map<String,String> map=new HashMap<>();
        map.put("","1");
        map.put(null,"2");
        map.put("d",null);
        map.put("b","4");
        System.out.println(map);
        //Hashtable 无序的 (我们说的有序是根据输入的顺序)
        Map<String,String> map1=new Hashtable<>();
        map1.put("a","1");
        map1.put("c","2");
        map1.put("d","3");
        map1.put("b","4");
        System.out.println(map1);
    }

TreeMap和LinkedHashMap

public static void main(String[] args) {
        //TreeMap(按照自然顺序排列的)
        Map<String,String> map1=new TreeMap<>();
        map1.put("a","1");
        map1.put("c","2");
        map1.put("d","3");
        map1.put("b","4");
        System.out.println(map1);
        //LinkedHashMap 有序的
        Map<String,String>map=new LinkedHashMap<>();
        map.put("a","1");
        map.put("c","2");
        map.put("d","3");
        map.put("b","4");
        System.out.println(map);
    }

map的遍历

先要创建一个集合存放map键值对的key值 ,然后通过key  get()查询到value

  1. foreach循环
  2. iterator迭代器
public static void main(String[] args) {
        Map<String, String> map = new HashMap<>();
        map.put("a", "1");
        map.put("d", "2");
        map.put("c", "3");
        map.put("b", "4");
        System.out.println(map.get("c"));
        System.out.println(map);

        Set<String> keys = map.keySet();
//        for (String key : keys) {
//            System.out.println(key + ":" + map.get(key));
//        }
        Iterator<String> ite= keys.iterator();
        while (ite.hasNext()){
           String key=ite.next();
            System.out.println(key+":"+map.get(key));
        }

    }

File类

//        文件IO : 文件读取 input输入    文件写入 output输出
//        file类  InputStream输入流     OutputStream输出流
public static void main(String[] args) {
        String path ="D:\\IntelliJ IDEA 2021.3.1\\Project\\0729\\day01-1";
        String path1="D:/IntelliJ IDEA 2021.3.1/Project/0729/day01-1";
        String path2 ="/user/local/nginx";
        System.out.println(path);
        System.out.println(path1);
        System.out.println(path2);
    }

 方法

public String getName() :返回由此File表示的文件或目录的名称。

public long length() :返回由此File表示的文件的长度。

public String getPath() :将此File转换为路径名字符串。

public boolean exists()` :此File表示的文件或目录是否实际存在。

public boolean isDirectory()` :此File表示的是否为目录。

public boolean isFile()` :此File表示的是否为文件。

public static void main(String[] args) {
        File file =new File("D:\\abc\\1.txt");
        System.out.println(file);
        System.out.println(file.exists());//文件是否存在
        System.out.println(file.isDirectory());//是否是文件夹
        System.out.println(file.isFile());//是否是文件
        System.out.println(file.length());//文件长度 大小 字节
        System.out.println(file.getPath());//获取当前文件路径
    }

 Flie的遍历

file.list()

file.listFiles()

public static void main(String[] args) {
        String path = "D:\\IntelliJ IDEA 2021.3.1\\Project\\0729\\day01-1";
        File file = new File(path);

//        String[] str = file.list();
//        for (String f : str) {
//            System.out.println(f);
//        }

        File[] files = file.listFiles();
        for (File ff : files) {
            System.out.println(ff.getName());//当前文件名称
            System.out.println(ff);//路径
        }
    }

 创建与删除

 public static void main(String[] args) {
//        mkdir  创建的是文件夹 目录  如果父级目录不存在 无法创建
//        mkdirs  创建的是文件夹 目录  如果父级目录不存在 也可以创建
        File file=new File("D:\\game\\aa\\bbb\\ccc");
        //mkdir 创建的是文件夹 不能创建多级目录
        //file.mkdir();
        //mkdirs可以创建多级目录
        file.mkdirs();
        System.out.println(file);
        System.out.println(file.isFile());
        System.out.println(file.exists());
        //delete 只能删除当前的空的文件夹 只能删除一个
        System.out.println(file.delete());
        System.out.println(file);
    }

IO流

  • 输入流 :把数据从其他设备上读取到内存中的流。

    • 以InputStream,Reader结尾

  • 输出流 :把数据从内存 中写出到其他设备上的流。

    • 以OutputStream、Writer结尾

  • 字节流 :以字节为单位,读写数据的流。

    • 以InputStream和OutputStream结尾

  • 字符流 :以字符为单位,读写数据的流。

    • 以Reader和Writer结尾

字节输入流

public static void main(String[] args) throws Exception {
        InputStream is =new FileInputStream("src/Java001.txt");
        File file=new File("src/Java001.txt");
        byte[] bytes=new byte[(int) file.length()];

        int num;
        while ((num= is.read(bytes))!=-1){
            System.out.println(new String(bytes,0,num));
        }
        is.close();
    }

 字节的输入定义一个byte数组,把读到的字节保存到数组中,通过循环遍历读出保存的 ,new String 把保存的转换成字符串从0开始到num(读多少个字节)

字节输出流

  public static void main(String[] args) throws IOException {
        OutputStream os =new FileOutputStream("src/Java001.txt");
        os.write('s');
        os.write('v');
        os.write('a');
        os.write('\n');
        byte[] bytes="今天天气不太好啊!!!".getBytes();
        os.write(bytes);
        os.close();
    }

字符输入流

public static void main(String[] args) throws IOException {
        Reader reader = new FileReader("src/Java002.txt");

        char[] chars=new char[1];
        int num;
        while ((num=reader.read(chars))!=-1){
            System.out.print(new String(chars,0,num));
        }
        reader.close();
    }

字符输出流

public static void main(String[] args) throws IOException {
        Writer wi =new FileWriter("src/Java002.txt");

        wi.write("今天有太阳");
        wi.write("\n");
        wi.write("abc");

        wi.close();
    }

复制文件

 public static void main(String[] args) throws IOException {
        InputStream is =new FileInputStream("src/Java001.txt");
        File file =new File("src/Java001.txt");
        
        OutputStream os =new FileOutputStream("001.txt");

        byte[] bytes=new byte[(int) file.length()];
        while (is.read(bytes)!=-1){
            os.write(bytes);
        }
        is.close();
        os.close();
    }

以上的写入,如果从新运行并写入之前的东西会被覆盖,如果想要继续在后面添加在文件后方加true表示允许继续追加,false表示不允许追加,可省略不写

public static void main(String[] args) throws IOException {
        Writer wi =new FileWriter("src/Java002.txt",true);

        wi.write("今天有太阳");
        wi.write("\n");
        wi.write("abc");

        wi.close();
    }

缓存流

字节流

 InputStream is = new FileInputStream("E:\\abcd\\img.jpg");
        InputStream bis = new BufferedInputStream(is);
        OutputStream os = new FileOutputStream("D:\\qqqwww\\img1.jpg");
        OutputStream bos = new BufferedOutputStream(os);

 字符流

                    Writer w = new FileWriter("src/java01.txt", true);
                    BufferedWriter bw = new BufferedWriter(w);

                    Reader r = new FileReader("src/java02.txt");
                    BufferedReader br = new BufferedReader(r);

转换流

                InputStream r = new FileInputStream("src/java02.txt");
                Reader r2 = new InputStreamReader(r,"GBK");
                BufferedReader br = new BufferedReader(r2);
 Writer w = new OutputStreamWriter(new FileOutputStream("src/java03.txt", true),"GBK");
             BufferedWriter bw = new BufferedWriter(w);

数据流

                OutputStream os =new FileOutputStream("src/java03.txt");
                DataOutputStream dos = new DataOutputStream(os);
DataInputStream dis = new DataInputStream(new FileInputStream("src/java03.txt"));
dos.writeInt(150);
dos.writeDouble(3.1415926);
dos.writeBoolean(true);
System.out.println(dis.readInt());
System.out.println(dis.readDouble());
System.out.println(dis.readBoolean());

输出必须按照输入的顺序写

对象流

                 OutputStream os =new FileOutputStream("src/java04.txt");
                ObjectOutputStream oos = ObjectInputStream ois = new ObjectInputStream(new FileInputStream("src/java04.txt")); new ObjectOutputStream(os);

创建对象 ,给对象赋值 把对象写入文件里

序列化

向文件中保存一个对象的过程就叫做 序列化

该类必须实现java.io.Serializable 接口

JDK8的新特性

lambda表达式

//        箭头函数  lambda表达式
//        (参数)->{ 代码体 lambda表达式 }
public static void main(String[] args) {

//        面向对象编程
        new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("hello world");
            }
        }).start();

        //  函数编程思想
        new Thread(() -> {
            System.out.println("hello world 世界");
        }).start();

    }

java.util.function包四大类函数式接口

消费型接口        有参无返回

供给型接口        无参有返回

Supplier<String> supplier =
                ()->new String[]{"石头", "剪刀", "布"}[(int) (Math.random() * 3)];
        System.out.println(supplier.get());

判断型接口        有参返回值是布尔型

 Predicate<String> predicate = (sb)->{
            for (int i = 0; i < sb.length(); i++) {
                char c = sb.charAt(i);
                if(!((c >= 'a' && c <= 'z' )  ||
                        (c>='A' && c<='Z') ||
                        (c>='0' && c<='9'))){
                    return false;
                }
            }
            return true;
        };
        System.out.println(predicate.test("ainiainiaini"));

功能型接口        有参有返回

IntFunction<String> iF = (cont)->{
            int [] arr = new int[cont];
            Arrays.fill(arr,cont);
            return Arrays.toString(arr);
        };
        System.out.println(iF.apply(1));
        System.out.println(iF.apply(2));

自定义型接口

方法引用

Lambda表达式是可以简化函数式接口的变量与形参赋值的语法。而方法引用和构造器引用是为了简化Lambda表达式的。

DoubleUnaryOperator duo = Math::floor;
        System.out.println(duo.applyAsDouble(3.5));
        System.out.println(duo.applyAsDouble(9.99));
IntBinaryOperator ibo = Math::max;
        System.out.println(ibo.applyAsInt(1, 2));
        System.out.println(ibo.applyAsInt(150, 200));

StreamAPI

1- 创建 Stream:通过一个数据源(如:集合、数组),获取一个流

2- 中间操作:每次处理都会返回一个持有结果的新Stream,即中间操作的方法返回值仍然是Stream类型的对象,因此中间操作可以是个操作链,可对数据源的数据进行n次处理,但是在终结操作前,并不会真正执行。

3- 终止操作:终止操作的方法返回值类型就不再是Stream了,因此一旦执行终止操作,就结束整个Stream操作了。一旦执行终止操作,就执行中间操作链,最终产生结果并结束Stream。

public static void main(String[] args) {
//        不会对源数据造成改变
//        1. 创建
        Stream<Integer> stream = Stream.of(55, 12, 7,54,21);
//        System.out.println(stream);

//        2.中间操作
        stream = stream.sorted();

//        3.终止操作
        stream.forEach(System.out::println);
    }
public static void main(String[] args) {
        int[] arr = {1, 3, 46, 46, 46, 46, 46, 73, 23, 46, 74, 34, 56, 3, 456};
        Arrays.stream(arr)
                .sorted()//排序
                .filter((num) -> num < 100)// filter 方法用于通过设置的条件过滤出元素
                .distinct()//去重复值
                .skip(2)//跳过前两个
                .forEach(System.out::println);
    }

标签:map,String,0729,System,0802,println,new,out
From: https://blog.csdn.net/m0_71108047/article/details/140778457

相关文章

  • 02 Go语言操作MySQL基础教程_20240729 课程笔记
    概述如果您没有Golang的基础,应该学习如下前置课程。Golang零基础入门Golang面向对象编程GoWeb基础Go语言开发RESTAPI接口_20240728基础不好的同学每节课的代码最好配合视频进行阅读和学习,如果基础比较扎实,则阅读本教程巩固一下相关知识点即可,遇到不会的知识点再看视频......
  • [20240802]NOIP比赛总结
    比赛链接比昨天好多了,谢天谢地。好消息:明天放假。坏消息:后天开学。好消息:没暑假作业。坏消息:拉了一堆课。赛时先写了T1暴力,然后一眼觉得正解是二进制位运算,所以先跑了。T2题目给出了正解,照着打,过了50pts,然后简单一想,过掉了。T3写了暴力,先跑。T4写了暴力,然后开始推性质......
  • Leetcode每日一题 20240729 682.棒球比赛
    题目描述你现在是一场采用特殊赛制棒球比赛的记录员。这场比赛由若干回合组成,过去几回合的得分可能会影响以后几回合的得分。比赛开始时,记录是空白的。你会得到一个记录操作的字符串列表ops,其中ops[i]是你需要记录的第i项操作,ops遵循下述规则:整数x:表示本回合新获......
  • 云原生周刊:Cilium v1.16.0 发布|20240729
    开源项目CyclopsCyclops是一个开源的开发工具,通过易于使用的用户界面简化了Kubernetes,使其更易上手。不再需要使用YAML创建和配置Kubernetes清单,可以使用Cyclops轻松配置和部署应用程序,还包括验证功能!KubetailKubetail是一个用于Kubernetes集群的私有实时日志查看......
  • 230729校内赛
    回文一句话题意:从左上角到右下角的路径上的字母能组成回文串的路径有几条题解暴力做法是从左上角和右下角分别往对方\(dp\),复杂度为\(\mathcalO(n^4)\)因为状态只有在\(x1+x2+y1+y2=n+m+2\)时合法,则确定三个变量即可推出剩下一个变量,复杂度为\(\mathcalO(n^3)\)......
  • 20230802模拟赛
    20230802模拟赛T1数学题题意令\(A,B,C\)为三个质数(\(A\leqB\leqC\)),\(N=A\timesB\timesC\)。给出\(N(1\leqN\leq10^{14})\),求\(B\)。题解由\(A\leqB\leqC\)可证复杂度直接枚举\(1e7\)个质数,求\(B\)。T2子序列题意给定一个长度为\(n(\leq35)\)的序列:......
  • 【230729-3】如图,在等腰直角三角形ABC中,角BAC=90度,AB=AC,角MAN=45度,BM=1,CN=3. 求:MN的
    【230729-3】如图,在等腰直角三角形ABC中,角BAC=90度,AB=AC,角MAN=45度,BM=1,CN=3. 求:MN的长度?......
  • 20230729 猜数字(摸鱼的产物)
    #include<iostream>#include<random>#include<Windows.h>intdigit=4;intmain(){//随机数std::default_random_engineseed;std::uniform_int_distribution<int>random(0,9);//0-9闭区间的随机数seed.seed(time(nullptr));......
  • 20230729
    复赛混合背包这道题用到了01背包、多重背包和完全背包,是一道背包问题的模板题。核心代码就是三个背包的写法01背包:for(intj=v;j>=w;j--){//每个物品只有拿或不拿两种状态,且只受到上一层(上一个物品)的前面价值的影响,而不受到这一层前面和后面的影响,所以从后向前遍历......
  • 【230729-1】已知:a,b,c为实数,a^2+b^2-c^2=0 求:(2a+b)/c的最大值?
    ......