Stack<Integer> intStack = new Stack<Integer>();
intStack.push(124);
intStack.push(14);
intStack.push(1);
while(!intStack.empty()){
// 제일 위에 있는 요소가 출력되면서 stack에서 빠짐
System.out.println(intStack.pop());
}
!intStack.isEmpty()
강사님이 isEmpty()를 사용하셨는데 자동완성을 잘못 보고 empty()를 사용했다.
java.util.Stack<E> public boolean empty()
Tests if this stack is empty.
Returns: true if and only if this stack contains no items; false otherwise.
스택이 비었다면 true, 아이템이 없다면 false
java.util.Vector<E> @Contract(pure = true) public boolean isEmpty()
Tests if this vector has no components.
Specified by: isEmpty in interface List
Overrides: isEmpty in class AbstractCollection
Returns: true if and only if this vector has no components, that is, its size is zero; false otherwise.
List 인터페이스의 메서드
next() vs nextLine()
next() : 다음 토큰만 문자열로 리턴
nextLine() : \n 을 포함하는 한 라인을 읽고 \n 을 버린 나머지만 리턴
관련해 새로 찾아보다가 알게된 것
isEmpty() : 문자열의 길이를 체크 후 길이가 0인 경우에 true 리턴, JAVA 6 이후
isBlank() : 문자열이 비어있거나 빈 공백을 포함하는 경우에 true 리턴, JAVA 11 이후
System.out.println(" ".isEmpty()); // false
System.out.println(" ".isBlank()); // true
Scanner sc = new Scanner(System.in);
String collectionName = sc.next();
String title = sc.nextLine();
switch (collectionName){
case "List":
ArrayList<String> strList = new ArrayList<>();
while(true){
String text = sc.nextLine();
if(Objects.equals(text,"끝")){
break;
}
strList.add(text);
}
System.out.println("[ " + collectionName + " 으로 저장된 " + title + " ]");
for(int i=0; i<strList.size(); i++){
int number = i+1;
System.out.println(number + ". " + strList.get(i));
}
break;
이렇게 작성하면 title이 제대로 입력되지 않고 컬렉션 안으로 입력된다.
String collectionName = sc.next();
String title = sc.next();
-> 레시피의 첫째 줄이 입력되지 않는다.
next() : 공백 전까지 입력받음
nextLine() : 엔터를 치기 전까지의 문장 전체 입력받음
둘을 섞어서 쓰다보면 입력 버퍼에 \n(개행문자, enter)가 포함되어 제대로 입력받지 못할 수도 있음