자바 에서 무시 하기 쉬 운 몇 가지 문제
2507 단어 자바
배열 을 List 로 바 꾸 는 방법 은 일반적으로 Arrays. asList () 를 사용 합 니 다.
List
소스 코드 를 보면 알 수 있 듯 이 여기 서 생 성 된 List 는 Arrays 의 내부 정적 클래스 입 니 다. 이 List 는 AbstractList 를 계승 하 였 으 나 일부 방법 은 실현 되 지 않 았 습 니 다.예 를 들 어 add, delete 방법.그래서 여기 서 직접 생 성 된 것 은 List 의 크기 를 바 꿀 수 없습니다.add 나 다른 방법 을 직접 호출 하면: Unsupported Operation Exception () 을 던 집 니 다.
그렇다면 어떻게 해야만 배열 을 List 로 바 꾸 고 목록 크기 를 변경 할 수 있 습 니까?
직접 이렇게 사용 가능:
List
두 list 를 Class 로 출력 하면 다른 결 과 를 볼 수 있 습 니 다.
System.out.println(staticList.getClass());
System.out.println(arrayList.getClass());
출력:
class java.util.Arrays$ArrayList
class java.util.ArrayList
2. List 에서 요소 삭제
먼저 두 가지 잘못된 요소 삭제 방법 을 살 펴 보 자.
첫 번 째 경 우 는 이상 을 던 집 니 다. Concurrent ModificationException.
@Test
public void rmFromListFail() {
//It will throw out ConcurrentModificationException.
ArrayList<String> list = new ArrayList<String>(Arrays.asList("a", "b", "c", "d"));
for (String s : list) {
if (s.equals("a")) list.remove(s);
}
}
이런 상황 은 잘못된 결 과 를 얻 을 수 있다.
@Test
public void rmFromListFail1() {
ArrayList<String> list = new ArrayList<String>(Arrays.asList("a", "b", "c", "d"));
for (int i = 0; i < list.size(); i++) {
list.remove(i);
}
System.out.println(list);
}
성공 적 인 방법, Iterator 사용
@Test
public void rmFromListOK(){
ArrayList<String> list = new ArrayList<String>(Arrays.asList("a", "b", "c", "d"));
Iterator<String> iter = list.iterator();
while (iter.hasNext()) {
String s = iter.next();
if (s.equals("a")) {
iter.remove();
}
}
System.out.println(list);
위의 두 문 제 는 제 가...
http://www.programcreek.com/2014/05/top-10-mistakes-java-developers-make/
여기 서 고 른 것 은 또 다른 문제 가 있 으 니 여러분 이 한번 보 셔 도 됩 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.