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,数组实体都是放在堆内存中,引用变量放在栈内存。

  • 相关阅读:
    jvisualm 结合 visualGC 进行jvm监控,并分析垃圾回收
    linux 查看服务器cpu 与内存配置
    arthas 使用总结
    selinux contexts 安全上下文的临时更改
    Android 8.1 Doze模式分析(五) Doze白名单及Debug方式
    Window 任意窗口置顶软件Window TopMost Control
    Android ApkToolPlus一个可视化的跨平台 apk 分析工具
    SVN Please execute the 'Cleanup' command.
    Android 如何在64位安卓系统中使用32位SO库
    Android cmd命令查看apk是32位还是64位?
  • 原文地址:https://www.cnblogs.com/coding-gaga/p/10667259.html
Copyright © 2011-2022 走看看