자바 문법 정리 (C++ 비교)

유승선 ·2022년 7월 29일
0

자바 독학

목록 보기
1/10
post-thumbnail

자바로도 코딩 테스트를 볼 수 있는 기량을 높이기 위해 추후에 더 정리가 필요하겠지만 C++ 과 다른 문법, 그리고 차이점을 간략하게 적은 포스트다.

Two Sum

map

c++

map<int,int> hashMap; 
hashMap.count({x}) 
hashMap[x] = y; 
hashMap[x] 

return {x,y} #vector form 

hashMap[x]++; 

java

HashMap<Integer,Integer> hashMap = new HashMap<Integer,Integer>() 
//초기값을 설정해두는데 쓰이지만, 안에 타입을 지정해두는거 스킵가능하다 

hashMap.containsKey({x}) 

hashMap.put(x,y) #Key, Value 
hashMap.get(x) 

return new int[] (x,y) #array form 
.size() => length 

hashMap.put(key, hashMap.get(key)+1)

map2

Majority Element

c++

hashMap[x]++ 
for(auto& it : hashMap){
	cout << it.first << it.second; 
}

java

hashMap.put(key, hashMap.get(key) + 1) 
for(HashMap.Entry<type,type> entry : hashMap.entrySet()) {
	System.out.println(entry.getKey(), entry.getValue()) 
}

String

Valid Anagram

c++

hashMap[s[i]]++; 
for(char c : s){
	cout << c; 
}
int n = 200; 
string v = to_string(n); 

string v2 = "200";
int n = stoi(v2); 

java

hashMap.put(s.charAt(i),hashMap.get(s.charAt(i)) +1) 

for(char c : s.toCharArray()){
	System.out.println(c) 
}
int n = 200;
String v = Integer.toString(n); 

String v2 = "200";
int n = Integer.parseInt(v2); 

Character.isDigit(c);
Character.isLetter(c);
Character.isLetterOrDigit
Character.isLowerCase
Character.isUpperCase
Character.isWhitespace
Character.toLowerCase(c);
Character.toUpperCase(c);

StringBuilder answer = new StringBuilder(); 
answer.append(); 

Arrays, Vectors

Increasing Subsequences

c++

vector<int> container;
vector<vector<int>> answer; 
set<vector<int>> s;
s.insert(container)
container.back() 
container[container.size()-1] 
container.pop_back();
container.push_back(); 

java

LinkedList<Integer> container = new LinkedList<>()

List<List<Integer>> answer = new LinkedList(); 

dfs(LinkedList<Integer> container>..., int[] nums){


if(container.size() > 1){
	s.add(new LinkedList(container)
}

container.getLast() 
container.removeLast() 
container.add(); 

항상 오브젝트를 넣을때는 클래스를 선언 해줘야한다.

bfs

Nearest Exit from Entrance in Maze

c++

vector<pair<int,int>> dir 
vector<vector<bool>> visited 
Queue<vector<int>> 
q.front() 
q.push({x,y,0})

java

int[][] dir = {{}}; 
boolean[][] visited = new boolean[][]
Queue<int []> q = new LinkedList<>(); 
q.peek();
q.add(new int[]{x,y,0}) 

sort

c++

map<int,int> hashMap; 
for(int i = 0; i < nums.size(); i++){
    hashMap[nums[i]]++; 
}

sort(nums.begin(),nums.end(),[&hashMap](int& a, int& b){
    if(hashMap[a] == hashMap[b]){
        return a > b; 
    }
    return hashMap[a] < hashMap[b]; 
});


return nums; 

java

HashMap<Integer,Integer> hashMap = new HashMap<>(); 
for(int i = 0; i < nums.size(); i++){
	hashMap.put(nums[i],hashMap.getOrDefault(nums[i],0)+1); 
}

List<Integer> lst = new LinkedList(hashMap.keySet()); 
Collections.sort(lst,(a,b) -> (hashMap.get(a) == hashMap.get(b)) ? b -a : hashMap.get(a) - hashMap.get(b)}); 

Lambda Sort 는 일반 배열에는 못하고 Integer 배열에만 사용 가능하다.

Custom Sort String

s.toCharArray() 하면은 char[] 배열이 온다. 그러나 lambda sort 같은 경우 primitive 에는 불가능 하기 때문에 다른 리스트를 따로 만들어줘서 primitive 를 다 넣어줘야했다.

profile
성장하는 사람

0개의 댓글