qordpsem
2024. 5. 23. 11:55
#난수 연습
import java.util.Random;
//난수연습하기
public class RandomName {
public static void main(String[] args) {
String[] data = {"가","나","다","라","마","바","사"};
Random r = new Random();
int n = r.nextInt(data.length);
System.out.println(n);
System.out.println(data[n]);
}
}
결과는 [0 , 가] 또는 [1, 나] 이런식으로 나온다
import java.util.Random;
//난수연습하기
public class RandomName {
public static void main(String[] args) {
String[] data = {"가","나","다","라","마","바","사"};
Random r = new Random();
int n = r.nextInt(data.length); //7개를 나누면 나머지가 0~6까지로 인덱스 수와 동일
String name = "";
for(int i =0; i<100; i++) {
name = data[i % data.length];
System.out.println(name);
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.println("ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ");
System.out.println("당첨자 : "+data[n]);
}
}
이렇게 하면
가~사를 반복하다가 결과값이 나온다
Thread.sleep(); 을 치면 빨간줄이 뜨는데 그때 try,catch를 적용하는 버튼을 누르면 코드가 이렇게 생성된다
#List (데이터 중복 허용)
- ArrayList : 자바의 컬렉션 중에서 가장 많이 사용
- LinkedList : 데이터의 중간에 추가 삭제가 빈번한 경우 사용하면 ArrayList보다 효율적
import java.util.ArrayList;
public class ArrayListTest {
public static void main(String[] args) {
ArrayList data = new ArrayList();
data.add("연필");
data.add("지우개");
data.add("샤프");
data.add("만년필");
data.add("만년필");
data.add(100);
System.out.println(data);
//List는 인덱스에 의해 데이터에 접근 (배열처럼)
String str = (String)data.get(1); //끄집어올땐 해당 자료형으로 변환해줘야함
int qty = (Integer)data.get(5); //끄집어올땐 해당 자료형으로 변환해줘야함
System.out.println(str);
System.out.println(qty);
}
}
가져올때 해당 자료형으로 변환하기
ArrayList list = new Arraylist() 와 같이 리스트를 생성하면 리스트에 온갖 자료형을 담을 수 있음
이게 좋은 줄 알았는데 컬렉션을 경험해보니 좋은게 아니었음
만약 리스트에 Person도 담고 Shape도 담고 Employee도 담고 등등
이렇게 되었을때 list에 담긴 데이터의 수 만큼 반복하여 결국 그 요소에 따라 일처리를 시켜야하는데
각각 자료형이 다르면 일일이 instanceof 연산자로 물어보고 형변환한 후
해당 클래스에 메소드 호출해야하는 것은 상당히 번거로움
가능하면 Object 보다는 내가 만든 클래스의 상속관계로 범위를 제한하는거 좋음
즉 리스트에 담는 자료형은 제한하도록 합니다
이것을 "제네릭"이라고 합니다
ArrayList<Person> list = new ArrayList<Person>();
이렇게 리스트를 만들어두면