본문 바로가기

Java/Java 알고리즘

자바 필수 메서드

반응형

# String과 StringBuilder

 

indexOf() 메서드와 substring() 메서드

while((pos=str.indexOf(' '))!=-1) {
    String tmp = str.substring(0, pos);
    int len=tmp.length();
    if(len>=m) {
        m=len;
        answer=tmp;
    }
            
str=str.substring(pos+1);

 

1. tmp에 ' '전까지 잘라서 넣는다.

2. str에 자른 부분 나머지 부분을 넣는다.

3. 길이가 m보다 큰 부분을 정답으로 한다.

import java.util.Scanner;

public class Main {
	public String solution(String str) {
		String answer=" ";
		int m=Integer.MIN_VALUE, pos;
		while((pos=str.indexOf(' '))!=-1) {
			String tmp = str.substring(0, pos);
			int len=tmp.length();
			if(len>=m) {
				m=len;
				answer=tmp;
			}
			str=str.substring(pos+1);
		}
		if(str.length()>m) answer=str;
		
		return answer;
	}
	public static void main(String[] args) {
		Main T = new Main();
		Scanner kb = new Scanner(System.in);
		String str = kb.nextLine();
		System.out.println(T.solution(str));
	}

}

//StringBuilder 메서드

//insert 특정위치에 문자열을 추가 insert(위치, "문자열")
//setCharAt 문자는 ''사용 -> setCharAt(위치, '문자')
//replace 시작점부터 끝점 앞까지 -> replace(시작위치, 끝나는위치, "문자열")
//결과를 저장 -> String result = sb.toString();

//String[] localName = parts[0].split("\\+");
//특수문자의 경우 \\을 붙여야 문자열로 인식가능

 

# String 변수도, concat(), charAt(), contains(), indexOf(), lastindexOf() 등등 사용가능

-> 한꺼번에 대문자로 소문자로 변경가능 toUpperCase(), toLowerCase();

 

# k=4라면, 전체 길이인 len에서, 뒤에서부터 4번째마다 '-'추가

for(int i=k; i<len;i+=k) {
sb.insert(len-i, "-");
}

#배열에서 바로 정렬

Arrays.sort(str,new Comparator<String>(){
    public int compare(String o1, String o2){

        return Integer.compare(o1.length(), o2.length());
    }
});

#Map의 메서드

containsKey(Key값) -> boolean

 


#정렬시 정규 표현식

int[][] boxTypes;
Arrays.sort(boxTypes, (a,b)-> b[1]-a[1]);
//내림차순

 

# compare / compareTo

public class Car  {

    int modelNo;

    int modelYear;

    public int getModelNo() {
        return modelNo;
    }

    public void setModelNo(int modelNo) {
        this.modelNo = modelNo;
    }

    public int getModelYear() {
        return modelYear;
    }

    public void setModelYear(int modelYear) {
        this.modelYear = modelYear;
    }

}
모델 번호에 따른 비교기 # 1

public class CarModelNoCompartor implements Comparator<Car>{

    public int compare(Car o1, Car o2) {

        return o1.getModelNo() - o2.getModelNo();
    }

}
모델 연도 기준 비교기 # 2

public class CarModelYearComparator implements Comparator<Car> {

    public int compare(Car o1, Car o2) {

        return o1.getModelYear() - o2.getModelYear();
    }

}

Collections.sort(list ,new Comparator<String>(){
    public int compare(String o1, String o2){

        return o1.compareTo( o2);
    }
});

 

참고 http://daplus.net/java-compare-%EC%99%80-compareto-%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90%EC%9D%80-%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C/

 

[java] compare ()와 compareTo ()의 차이점은 무엇입니까? - 리뷰나라

Java compare()와 compareTo()메소드 의 차이점은 무엇입니까 ? 그 방법들이 같은 대답을하나요? 답변 에서 JavaNotes : a.compareTo(b): Comparable 인터페이스 : 값을 비교하고 값이보다 작거나 같거나 큰지 여부

daplus.net

 

 


#ArrayList로 초기화

ArrayList<Integer> p = new ArrayList<>(Arrays.asList(2,3,4,5,6,1));

int[] arr = {2, 5, 3, 1, 4};
ArrayList<Integer> p = new ArrayList<>();
for(int i:arr) p.add(i);

 

반응형