[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()

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();

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,數組實體都是放在堆內存中,引用變量放在棧內存。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM