[개발] 프로그램 지식

[JAVA] 자바 클래스 이론 모음 (2)

  • -
반응형

출처  : https://www.w3schools.com/java

-- 자바 클래스 이론 START --

자바 배열 ArrayList

ArrayList 정렬
java.util패키지 의 또 다른 유용한 클래스는 목록을 알파벳순 또는 숫자순으로 정렬하는 방법을 Collections포함하는 클래스 입니다.sort()

import java.util.ArrayList;
import java.util.Collections;  // Import the Collections class

public class Main {
  public static void main(String[] args) {
    ArrayList<String> cars = new ArrayList<String>();
    cars.add("Volvo");
    cars.add("BMW");
    cars.add("Ford");
    cars.add("Mazda");
    Collections.sort(cars);  // Sort cars
    for (String i : cars) {
      System.out.println(i);
    }
  }
}









LinkedList
ArrayList, LinkedList 차이
클래스 LinkedList는 와 마찬가지로 동일한 유형의 많은 객체를 포함할 수 있는 컬렉션입니다 ArrayList.

클래스 는 둘 다 인터페이스를 구현하므로 클래스 LinkedList와 동일한 메서드를 모두 갖습니다 . 즉, 동일한 방식으로 항목을 추가하고, 항목을 변경하고, 항목을 제거하고, 목록을 지울 수 있습니다.ArrayListList

그러나 ArrayList클래스와 LinkedList클래스는 동일한 방식으로 사용될 수 있지만 구축되는 방식은 매우 다릅니다.

ArrayList의 작동 방식
클래스 ArrayList내부에는 일반 배열이 있습니다. 요소가 추가되면 배열에 배치됩니다. 배열이 충분히 크지 않으면 이전 배열을 대체하기 위해 더 큰 새 배열이 생성되고 이전 배열은 제거됩니다.

LinkedList의 작동 방식
해당 항목은 "컨테이너"에 저장 LinkedList됩니다. 목록에는 첫 번째 컨테이너에 대한 링크가 있고 각 컨테이너에는 목록의 다음 컨테이너에 대한 링크가 있습니다. 목록에 요소를 추가하려면 요소가 새 컨테이너에 배치되고 해당 컨테이너는 목록의 다른 컨테이너 중 하나에 연결됩니다.

사용 시기
ArrayList데이터를 저장 및 액세스하고 LinkedList 데이터를 조작하려면 를 사용하세요 .






LinkedList 메소드
대부분의 경우 ArrayList목록의 임의 항목에 액세스해야 하는 것이 일반적이므로 이 방법이 더 효율적이지만 LinkedList특정 작업을 보다 효율적으로 수행할 수 있는 여러 가지 방법을 제공합니다.

Method Description
addFirst() Adds an item to the beginning of the list.
addLast() Add an item to the end of the list
removeFirst() Remove an item from the beginning of the list.
removeLast() Remove an item from the end of the list
getFirst() Get the item at the beginning of the list
getLast() Get the item at the end of the list








자바 해시맵 HashMap
해시맵 크기
capitalCities.size(); // 4







HashMap을 통한 루프
for-eachHashMap 루프를 사용하여 a의 항목을 반복합니다 .
참고:keySet() 키만 원하는 경우 이 방법을 사용 하고, values()값만 원하는 경우 이 방법을 사용하세요.

import java.util.HashMap;

public class Main {
  public static void main(String[] args) {
    HashMap<String, String> capitalCities = new HashMap<String, String>();
    capitalCities.put("England", "London");
    capitalCities.put("Germany", "Berlin");
    capitalCities.put("Norway", "Oslo");
    capitalCities.put("USA", "Washington DC");
    
    for (String i : capitalCities.keySet()) {
      System.out.println(i);
    }
  }
}

>>> 
USA
Norway
England
Germany



import java.util.HashMap;

public class Main {
  public static void main(String[] args) {
    HashMap<String, String> capitalCities = new HashMap<String, String>();
    capitalCities.put("England", "London");
    capitalCities.put("Germany", "Berlin");
    capitalCities.put("Norway", "Oslo");
    capitalCities.put("USA", "Washington DC");
    
    for (String i : capitalCities.values()) {
      System.out.println(i);
    }
  }
}

>>>
Washington DC
Oslo
London
Berlin


import java.util.HashMap;

public class Main {
  public static void main(String[] args) {
    HashMap<String, String> capitalCities = new HashMap<String, String>();
    capitalCities.put("England", "London");
    capitalCities.put("Germany", "Berlin");
    capitalCities.put("Norway", "Oslo");
    capitalCities.put("USA", "Washington DC");
    
    for (String i : capitalCities.keySet()) {
      System.out.println("key: " + i + " value: " + capitalCities.get(i));
    }
  }
}

>>>
key: USA value: Washington DC
key: Norway value: Oslo
key: England value: London
key: Germany value: Berlin







자바 반복자 Iterator

import java.util.ArrayList;
import java.util.Iterator;

public class Main {
  public static void main(String[] args) {
  
    // Make a collection
    ArrayList<String> cars = new ArrayList<String>();
    cars.add("Volvo");
    cars.add("BMW");
    cars.add("Ford");
    cars.add("Mazda");
  
    // Get the iterator
    Iterator<String> it = cars.iterator();
  
    // Print the first item
    System.out.println(it.next());
  }
}

>>> 
Volvo





컬렉션을 통한 반복
컬렉션을 반복하려면 다음의 hasNext()및 next()메서드를 사용합니다 Iterator.


while(it.hasNext()) {
  System.out.println(it.next());
}





컬렉션에서 항목 제거
반복자는 반복되는 컬렉션을 쉽게 변경하도록 설계되었습니다. 이 remove()메서드는 반복하는 동안 컬렉션에서 항목을 제거할 수 있습니다.


반복자를 사용하여 컬렉션에서 10보다 작은 숫자를 제거합니다.

import java.util.ArrayList;
import java.util.Iterator;

public class Main {
  public static void main(String[] args) {
    ArrayList<Integer> numbers = new ArrayList<Integer>();
    numbers.add(12);
    numbers.add(8);
    numbers.add(2);
    numbers.add(23);
    Iterator<Integer> it = numbers.iterator();
    while(it.hasNext()) {
      Integer i = it.next();
      if(i < 10) {
        it.remove();
      }
    }
    System.out.println(numbers);
  }
}


자바 예외 Exceptions
Java 코드를 실행할 때 프로그래머의 코딩 오류, 잘못된 입력으로 인한 오류 또는 기타 예측할 수 없는 오류 등 다양한 오류가 발생할 수 있습니다.

오류가 발생하면 일반적으로 Java가 중지되고 오류 메시지가 생성됩니다. 이에 대한 기술 용어는 다음과 같습니다. Java는 예외를 발생시킵니다 (오류 발생).

public class Main {
  public static void main(String[] args) {
    try {
      int[] myNumbers = {1, 2, 3};
      System.out.println(myNumbers[10]);
    } catch (Exception e) {
      System.out.println("Something went wrong.");
    } finally {
      System.out.println("The 'try catch' is finished.");
    }
  }
}





자바 정규식 RegEx

정규 표현식이란 무엇입니까?
정규식은 검색 패턴을 형성하는 일련의 문자입니다. 텍스트에서 데이터를 검색할 때 이 검색 패턴을 사용하여 검색하려는 내용을 설명할 수 있습니다.

정규식은 단일 문자일 수도 있고 더 복잡한 패턴일 수도 있습니다.

정규식을 사용하여 모든 유형의 텍스트 검색 및 텍스트 바꾸기 작업을 수행할 수 있습니다.

Java에는 정규식 클래스가 내장되어 있지 않지만 패키지를 가져와서 java.util.regex 정규식으로 작업할 수 있습니다. 패키지에는 다음 클래스가 포함되어 있습니다.

Pattern클래스 - 패턴을 정의합니다(검색에 사용됨).
Matcher클래스 - 패턴을 검색하는 데 사용됩니다.
PatternSyntaxException클래스 - 정규식 패턴의 구문 오류를 나타냅니다.



자바 스레드 Threads
스레드를 사용하면 동시에 여러 작업을 수행하여 프로그램이 보다 효율적으로 작동할 수 있습니다.
스레드를 사용하면 기본 프로그램을 중단하지 않고 백그라운드에서 복잡한 작업을 수행할 수 있습니다.

스레드 생성
스레드를 생성하는 방법에는 두 가지가 있습니다.



Thread클래스를 확장하고 해당 메서드를 재정 의하여 만들 수 있습니다 run() .
확장 구문
public class Main extends Thread {
  public void run() {
    System.out.println("This code is running in a thread");
  } 
}



스레드를 생성하는 또 다른 방법은 인터페이스를 구현하는 것입니다 Runnable.
구문 구현
public class Main implements Runnable {
  public void run() {
    System.out.println("This code is running in a thread");
  }
}




동시성 문제
스레드는 프로그램의 다른 부분과 동시에 실행되기 때문에 코드가 어떤 순서로 실행되는지 알 수 있는 방법이 없습니다. 스레드와 기본 프로그램이 동일한 변수를 읽고 쓰는 경우 값을 예측할 수 없습니다. 이로 인해 발생하는 문제를 동시성 문제라고 합니다.


변수 amount 의 값을 예측할 수 없는 코드 예:

public class Main extends Thread {
  public static int amount = 0;

  public static void main(String[] args) {
    Main thread = new Main();
    thread.start();
    System.out.println(amount);
    amount++;
    System.out.println(amount);
  } } }

  public void run() {
    amount++;




동시성 문제를 방지하려면 스레드 간에 가능한 한 적은 수의 속성을 공유하는 것이 가장 좋습니다. 속성을 공유해야 하는 경우 가능한 해결책 중 하나는 isAlive() 스레드가 변경할 수 있는 속성을 사용하기 전에 스레드의 메서드를 사용하여 스레드 실행이 완료되었는지 확인하는 것입니다.

isAlive()동시성 문제를 방지하는 데 사용합니다 .

public class Main extends Thread {
  public static int amount = 0;

  public static void main(String[] args) {
    Main thread = new Main();
    thread.start();
    // Wait for the thread to finish
    while(thread.isAlive()) {
    System.out.println("Waiting...");
  } } } }
  // Update amount and print its value
  System.out.println("Main: " + amount);
  amount++;
  System.out.println("Main: " + amount);
  
  public void run() {
    amount++;








Java 람다 표현식 Lambda
Java 람다 표현식
람다 표현식은 Java 8에 추가되었습니다.

람다 표현식은 매개변수를 받아 값을 반환하는 짧은 코드 블록입니다. 람다 식은 메서드와 유사하지만 이름이 필요하지 않으며 메서드 본문에서 바로 구현할 수 있습니다.

import java.util.ArrayList;

public class Main {
  public static void main(String[] args) {
    ArrayList<Integer> numbers = new ArrayList<Integer>();
    numbers.add(5);
    numbers.add(9);
    numbers.add(8);
    numbers.add(1);
    numbers.forEach( (n) -> { System.out.println(n); } );
    
    numbers.forEach( (n) -> { Systehttp://m.out.print(n); } );
  }
}

>>>
5
9
8
1
5981


반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.