zoukankan      html  css  js  c++  java
  • [Java]刷题中的Java基础

    数组

    • 取数组长度是属性length
    • 排序 Arrays.sort(arr,1,n+1);
    • 数组的拷贝
     int a[] = {4, 3, 6, 5, 1, 2};
     9         int b[] = Arrays.copyOf(a, 4);
    10         int c[] = Arrays.copyOfRange(a, 2, 4 + 1);
    
    • 初始化为同一值,以二维数组为例:
    int[][] dp=new int[cntLong+1][cntShort+1];//
    		for(int i=0;i<=cntLong;++i) {//
    			Arrays.fill(dp[i], Integer.MAX_VALUE);//
    		}
    

    ArrayList

    ArrayList<Integer> maxRootHeap = new ArrayList<Integer>();
    maxRootHeap.add(input[i]);
    maxRootHeap.get(0);
    maxRootHeap.set(0, input[i]);
    maxRootHeap.size()
    arraylist.remove(idx)

    LinkedList

    只有LinkedList实现了removeLast()接口,所以使用该接口,则声明集合的时候要直接为LinkedList 而不是 List
    在list的首部插入元素:ansList.add(0,list);

    Queue

    Queue是一个接口。
    Queue<Integer> rQ=new LinkedList<>();

    Stack

    s.push()
    s.pop()
    s.peek()

    由于Stack继承Vector数组,而不是链表实现,有时需要扩容,所以效率低,推荐使用实现了Deque接口的LinkedList,Deque接口为双端队列,保留了pop()和push方法。

    Deque<Character> stack=new LinkedList<>();
    stack.push('a');
    stack.pop
    

    HashSet

    HashSet<Integer> set =new HashSet<Integer>();
    set.contains(elm);
    set.add(elm);

    HashMap

    map value累加:map.put(subStr,map.getOrDefault(subStr,0)+1);
    遍历mapfor(String str: map.keySet()){}

    String与char[]

    String

    str1.charAt(pos)
    遍历String的元素也可以先转成字符数组 :str1.toCharArray()
    str1.trim().toCharArray()
    s2.substring(begPos,endPos);
    s2.length();
    String[] strs=s1.split("\.");
    String转int:
    Integer num=Integer.valueOf(s1);
    int num=Integer.parseInt(s1);

    indexOf作用:用于检索一个字符串在另一个字符串中的位置。
    
    indexOf的几个重载方法如下:
    
    int indexOf(String str)  意思为在字符串中检索str第一次出现的位置,如果找不到返回-1。
    
           eg: String str = "I can because i think i can";
    
                    int index = str.indexOf("can");
    
                    System.out.println(index); // 2  从0开始,空格也算一位
    
    int indexOf(String str,int fromIndex) 意思为  从字符串的fromIndex位置开始检索。
    
     eg: String str = "I can because i think i can";           
    
              index = str.indexOf("can", 6);
    
              System.out.println(index); // 24
    
    char[]

    char[] subStr=new char[subStrLen];

    将 char 变量 c 转换成字符串

    String.valueOf(char c) :

    对象相等比较

    要用obj1.equals(obj2),而不能用====比较的是对象地址。

    输入

    Scanner in=new Scanner(System.in);
    		while(in.hasNext()) {
    			int N=in.nextInt();
                    }
    

    取最小值

    public static int getMin(int... vals) {
            int min=Integer.MAX_VALUE;
            for(int val:vals) {
                if(val<min) {
                    min=val;
                }
            }
            return min;
        }
    

    Java.lang包

    取两数较小值 min=Math.min(min,arr[i]);

    排序

    数组排序Arrays.sort(arr);
    
    Collections.sort(list, new Comparator<Student>(){  
    
                /*  
                 * int compare(Student o1, Student o2) 返回一个基本类型的整型,  
                 * 返回负数表示:o1 小于o2,  
                 * 返回0 表示:o1和o2相等,  
                 * 返回正数表示:o1大于o2。  
                 */  
                public int compare(Student o1, Student o2) {  
    
                    //按照学生的年龄进行升序排列  
                    if(o1.getAge() > o2.getAge()){  
                        return 1;  
                    }  
                    if(o1.getAge() == o2.getAge()){  
                        return 0;  
                    }  
                    return -1;  
                }  
            });   
            System.out.println("排序后:"+list);  
        }  
    }  
    

    StringBuilder

    有大量的字符拼接等操作用StringBuilder
    https://baijiahao.baidu.com/s?id=1629804867201303563&wfr=spider&for=pc
    StringBuilder是一个类,可以用来处理字符串,最简单的用法:

    StringBuilder sb=new StringBuilder();
    sb.append("123");
    sb.append("456");
    string str=sb.toString();
    

    String

    str.substring(i, j);
    

    关于new数组

    Java与C++中创建数组

    JAVA 里面的数组名是一个引用变量,引用变量是放在是放在一个栈里面,而JAVA数组本身就是对象,Java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中的。所以如果不new一下,就无法得到这个数组,即引用变量没有引用的对象。而在C++中,数组名实际上是数组的首地址,是一个指针,数组在声明之后就已经生成了这个数组对象。就不用new了

    Java中new String类型与数组类型

    不同于String类,String由于实现了常量池 所以new 和不new 有区别:new的话,引用变量指向堆区。不new的话,引用变量指向常量池。
    对于数组的定义,初始化时用new与不用new 没区别,只是两种方式罢了,因为数组是引用数据类型,建立对象时,无论用不用new,数组实体都是放在堆内存中,引用变量放在栈内存。

  • 相关阅读:
    HTTP 状态码大全
    Redis Cluster数据分片机制
    redis 哨兵集群原理及部署
    python 连接 redis cluster 集群
    python连接redis哨兵集群
    Ubuntu设置终端操作行为的回收站
    实用Golang库
    实用的Python库
    Python 生成 JWT(json web token) 及 解析方式
    django 进行语言的国际化及在后台进行中英文切换
  • 原文地址:https://www.cnblogs.com/coding-gaga/p/10667259.html
Copyright © 2011-2022 走看看