Bootstrap

备战CSP(Java 常用函数总结)

目录

引言

导包

输入

输出

​编辑

字符串

类型转换

排序(包含简单数据类型和复杂数据类型)

Map 

Set 

 Queue

Queue

Deque

PriorityQueue


引言

       该文主要是博主备战CSP(Java)来查库函数所用,因为博主以前没学过Java,故写文以记,短时间会持续更新!

导包

import java.util.*;//导入所有包

输入

	public static void  main(String[] args) {
		Scanner scanner=new Scanner(System.in);//创建对象
		int n=scanner.nextInt(),m=scanner.nextInt();//输入整数
		String str=scanner.next();//输入不带空格的字符串
		scanner.nextLine();//吃回车
		String str1=scanner.nextLine();//输入带有空格的字符串
		String str2=scanner.nextLine();
		System.out.println(n);
		System.out.println(m);
		System.out.println(str);
		System.out.println(str1);
		System.out.println(str2);
	}

输出

    public static void main(String[] args) {
    	System.out.println("换行");
    	System.out.print("不换行");
    	System.out.println("");
    	//输出指定的小数
    	System.out.println(String.format("%.4f", 2.878));
    	//输出指定的小数
    	System.out.println(String.format("%.3f", 2.878));
    	//输出指定的小数
    	System.out.println(String.format("%.2f", 2.878));
    	//输出指定的小数
    	System.out.println(String.format("%.1f", 2.878));
    	//输出指定的小数
    	System.out.println(String.format("%.0f", 2.878));
    }

字符串

	public static void  main(String[] args) {
		Scanner scanner=new Scanner(System.in);//创建对象
		String str=new String("aBCdefg");
		System.out.println("字符串比较");
		System.out.println(str.equals("abc"));//判断str是否包含"abc"
		System.out.println(str.equalsIgnoreCase("aBc"));//无视大小写
		System.out.println(str.compareTo("aBC"));//字典序 比较小于返回负数 等于返回0 大于返回正数
		System.out.println("字符串查找");		
		System.out.println(str.contains("def")); // 返回boolean
		System.out.println(str.indexOf("def")); // 3,d开始的索引
		System.out.println(str.indexOf("bit")); // -1,没有查到	
		System.out.println(str.startsWith("aBC")); // true 
		System.out.println(str.startsWith("abc")); // false 
		System.out.println(str.endsWith("g")); // true
		System.out.println("字符串遍历");
		for(int i=0;i<str.length();i++) {
			System.out.print(str.charAt(i));
			System.out.print(" ");
		}
		System.out.println();
		System.out.println("字符串替换");
		str="helloworld";
		System.out.println(str.replaceAll("l", "_")); //he__owor_d
		System.out.println(str.replaceFirst("l", "_")); //he_loworl
		System.out.println("字符串拆分");
		str = "hello world hello People" ; 
		String[] result = str.split(" ") ; // 按照空格拆分
		for(String s: result) { 
		 System.out.println(s); 
		} 
		System.out.println("字符串截取");//两个参数 一个开始索引 一个结束索引
		str = "helloworld" ; 
		System.out.println(str.substring(5)); // world
		System.out.println(str.substring(0, 5));//hello
		System.out.println("去掉字符串开头和结尾的空白字符(空格, 换行, 制表符等)");		
		str = " hello world " ; 
		System.out.println("["+str+"]"); 
		System.out.println("["+str.trim()+"]"); 
		System.out.println("大小写转换");		
		str = " hEllo%$$%@#$%world 哈哈哈 " ; 
		System.out.println(str.toUpperCase()); // HELLO%$$%@#$%WORLD 哈哈哈 
		System.out.println(str.toLowerCase()); // hello%$$%@#$%world 哈哈哈 
		System.out.println("翻转字符串和获取字符串长度");
		System.out.println(str.length());
		StringBuffer sb = new StringBuffer("helloworld"); //String类不提供reverse()方法
		System.out.println(sb.reverse()); //dlrowolleh
		System.out.println(sb); //会改变原来的值
		
	}

类型转换

  public static void main(String[] args) {
      int n0 = 100;
      System.out.println("基本数据类型转String");//基本类型的值 + " "
      String str = n0 + " ";
      System.out.println(str);
      System.out.println("String转基本数据类型");//XX.parseXX("基本类型的值")
      int n1 = Integer.parseInt("123");
      System.out.println(n1);
      double n2 = Double.parseDouble("123.1");
      System.out.println(n2);
      float n3 = Float.parseFloat("123.45");
      System.out.println(n3);
      short n4 = Short.parseShort("12");
      System.out.println(n4);
      long n5 = Long.parseLong("12345");
      System.out.println(n5);
      boolean n6 = Boolean.parseBoolean("true");
      System.out.println(n6);
      Byte n7 = Byte.parseByte("12");
      System.out.println(n7);
    }

排序(包含简单数据类型和复杂数据类型)

	public static class Node implements Comparable<Node>{
		public int x;
		public int w;
		public int left;
		public int right;
		@Override
		public int compareTo(Node other) {
			return this.x-other.x;
		}
		
	}
	public static void main(String[] args)
	{
		Scanner scanner=new Scanner(System.in);
		int m=scanner.nextInt();
		Node[] nodes=new Node[m+1];
		for(int i=1;i<=m;i++)
		{
			nodes[i]=new Node();//
			nodes[i].x=scanner.nextInt();
			nodes[i].w=scanner.nextInt();
		}
		System.out.println("对复杂数据类型排序");
		Arrays.sort(nodes,1,m+1);
        // 打印排序后的数组  
		for(int i=1;i<nodes.length;i++)  {
			System.out.print(nodes[i].x);
			System.out.print(" ");
		}
		System.out.println("对基本数据类型升序排序");
		int[] array = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5};  
		Arrays.sort(array,0,4);//默认升序
		for(int i=0;i<array.length;i++)  {
			System.out.print(array[i]);
			System.out.print(" ");
		}
		System.out.println("对数据降序排序");
		Integer[] array1 = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5};  
		Arrays.sort(array1,0,4,Collections.reverseOrder());//用Integer定义 float要变成Float
		for(int i=0;i<array1.length;i++)  {
			System.out.print(array1[i]);
			System.out.print(" ");
		}
		System.out.println("对字符串升序排序");
		//Java没有内置字符串内部排序方法。但可以将其转换为char数组,使用Arrays.Sort对其进行排序,再将其转换回字符串
		String test= "cedba";
		char[] ar = test.toCharArray();
		Arrays.sort(ar);
		String sorted = String.valueOf(ar);
		System.out.println(sorted);
	}

Map 

    public static void main(String[] args) {
        Map<String,Integer> map = new HashMap<>();//基于哈希桶 key是无须的
       // Map<String,Integer> map = new TreeMap<>();基于红黑树 key是有序的 key必须能比较否则抛出异常
        map.put("abc",10);
        map.put("hello",20);
        System.out.println(map);//Map类重写了toString方法
        map.put("abc",20);//修改"abc"对应的value值
        System.out.println(map);
        System.out.println("根据key 获取value");
        System.out.println(map.get("abc"));//20
        System.out.println(map.get("key"));//找不到返回null
        System.out.println(map.getOrDefault("key",10086));//找不到返回默认值10086
        System.out.println("删除映射关系");
        map.remove("abc");
        System.out.println(map);
        System.out.println("获取key集合");
        map.put("abc",10);
        map.put("hello",20);
        map.put("hhf",23);
        map.put("world",20);
        Set<String> set = map.keySet();
        System.out.println(set);
        System.out.println("获取value集合");
        Collection<Integer> list = map.values();
        System.out.println(list);
        System.out.println("判断map是否存在某个key或某个value");
        System.out.println(map.containsKey("abc"));
        System.out.println(map.containsValue(10086));
        System.out.println("打包映射关系并遍历map");
        Set<Map.Entry<String,Integer>> entrySet = map.entrySet();
        System.out.println(entrySet);
        for(Map.Entry<String,Integer> entry : entrySet){
            System.out.println("key: "+entry.getKey()+" value: "+entry.getValue());
        }
    }

Set 

    public static void main(String[] args) {
        Set<String> fruits = new HashSet<String>();
        fruits.add("Apple");
        fruits.add("Banana");
        fruits.add("Orange");
        fruits.add("Apple"); // 重复元素,不会被添加

        System.out.println("Fruits: " + fruits);

        fruits.remove("Banana");
        System.out.println("Fruits after removal: " + fruits);

        boolean containsApple = fruits.contains("Apple");
        System.out.println("Contains Apple: " + containsApple);
        System.out.println("大小: " + fruits.size());   
        
        // TreeSet是Set接口的另一个实现类,它基于红黑树实现,并提供了对元素进行排序的功能。以下是一些常用的TreeSet方法:
        Set<String> names = new TreeSet<String>();
        names.add("Charlie");
        names.add("Alice");
        names.add("Bob");

        System.out.println("Names: " + names);

        names.remove("Bob");
        System.out.println("Names after removal: " + names);

        boolean containsCharlie = names.contains("Charlie");
        System.out.println("Contains Charlie: " + containsCharlie);

        String first = ((TreeSet<String>) names).first();
        String last = ((TreeSet<String>) names).last();
        System.out.println("First name: " + first);
        System.out.println("Last name: " + last);
        for(String str:names) System.out.println(str);

    }

 Queue

Queue

    public static void main(String[] args) {
            // 创建一个Queue对象
            Queue<String> queue = new LinkedList<>();
     
            // 添加元素到队列
            queue.add("Apple");
            queue.add("Banana");
            queue.add("Orange");
     
            // 获取队列头部元素
            String head = queue.peek();
            System.out.println("头部元素:" + head);
     
            // 遍历队列并输出元素
            System.out.println("队列元素:");
            for (String element : queue) {
                System.out.println(element);
            }
     
            // 移除队列头部元素
            String removedElement = queue.poll();
            System.out.println("移除的元素:" + removedElement);
     
            // 队列大小
            int size = queue.size();
            System.out.println("队列大小:" + size);
     
            // 判断队列是否为空
            boolean isEmpty = queue.isEmpty();
            System.out.println("队列是否为空:" + isEmpty);
            
    }

Deque

  public static void main(String[] args) {

        // 创建一个Deque对象
        Deque<String> deque = new ArrayDeque<>();
 
        // 添加元素到双端队列
        deque.addFirst("Apple");
        deque.addLast("Banana");
        deque.addLast("Orange");
 
        // 获取双端队列头部和尾部元素
        String first = deque.getFirst();
        String last = deque.getLast();
        System.out.println("头部元素:" + first);
        System.out.println("尾部元素:" + last);
 
        // 遍历双端队列并输出元素
        System.out.println("双端队列元素(从头到尾):");
        for (String element : deque) {
            System.out.println(element);
        }
 
        // 移除双端队列头部和尾部元素
        String removedFirst = deque.removeFirst();
        String removedLast = deque.removeLast();
        System.out.println("移除的头部元素:" + removedFirst);
        System.out.println("移除的尾部元素:" + removedLast);
 
        // 双端队列大小
        int size = deque.size();
        System.out.println("双端队列大小:" + size);
        // 遍历双端队列并输出元素
        System.out.println("双端队列元素(从头到尾):");
        for (String element : deque) {
            System.out.println(element);
        }
        // 判断双端队列是否为空
        boolean isEmpty = deque.isEmpty();
        System.out.println("双端队列是否为空:" + isEmpty);
            
    }

PriorityQueue

    public static void main(String[] args) {

        //默认采用的是最小堆实现的
        PriorityQueue<Integer> queue = new PriorityQueue<Integer>(10, new Comparator<Integer>() {
            public int compare(Integer a, Integer b) {
                return b-a; //if a>b 则交换,so这是递增序列
            }
        });
        queue.offer(9);
        queue.offer(13);
        queue.offer(14);
        int len = queue.size();
        for (int i = 0; i < len; i++) {
            System.out.println(queue.poll());
        }
        //输出 13  9
        //默认采用的是最小堆实现的
        PriorityQueue<Integer> queue2 = new PriorityQueue<>(10);
        queue2.offer(8);
        queue2.offer(11);
        queue2.offer(9);
        len = queue2.size();
        for (int i = 0; i < len; i++) {
            System.out.println(queue2.poll());
        }
        //输出 9, 11
        System.out.println(queue2.size());
    }

 

;