이 글은 집합 컬렉션과 관련된 문제를 주로 소개하는 java에 대한 관련 지식을 제공합니다. 집합 컬렉션의 특징은 순서가 없고, 반복되지 않으며, 색인이 없음을 함께 살펴보겠습니다. 모두가 도움이 됩니다.
추천 학습: "java 비디오 튜토리얼"
세트 컬렉션 기능:
- 순서 없음: 액세스 순서가 일치하지 않습니다.
- 중복 없음: 중복 제거 가능
- 색인 없음: 있음 는 색인화 방법이 아니므로 일반적인 for 루프 순회를 사용할 수 없으며 색인을 통해 요소를 얻을 수도 없습니다
Set 컬렉션 구현 클래스 기능:
HashSet: 순서 없음, 비반복, 색인 없음
LinkedHashSet: Ordered, non-duplicate, no index
TreeSet: Sort, non-duplicate, no index
Set 컬렉션의 기능은 기본적으로 Collection의 API와 동일합니다.
HashSet 컬렉션
HashSet 컬렉션:
Set<string> set = new HashSet(); set.add("石原里美"); set.add("石原里美"); set.add("工藤静香"); set.add("朱茵"); System.out.println(set); set.remove("朱茵"); System.out.println(set);</string>
출력 결과:
위의 코드와 실행 결과를 통해 HashSet 컬렉션이 순서가 없고 반복되지 않는다는 것을 분명히 알 수 있습니다. 위 그림을 종합해보면 HashSet 컬렉션은 get() 메소드의 인덱스를 통해서는 데이터를 얻을 수 없고, 컬렉션에 있는 데이터를 삭제하는 경우에는 방향 삭제를 통해서만 데이터를 삭제할 수 있음을 알 수 있다.
LinkedHashSet 집합:
LinkedHashSet 집합:
Set<string> set = new LinkedHashSet();
set.add("石原里美");
set.add("石原里美");
set.add("工藤静香");
set.add("朱茵");
System.out.println(set);
set.remove("朱茵");
System.out.println(set);</string>
출력 결과:
위 코드를 출력 결과와 비교하면 무질서와 질서의 차이를 알 수 있습니다. 들어오는 데이터는 중단되지만 후자는 여전히 입력 데이터 순서대로 데이터를 저장하므로 출력은 정렬된 상태입니다.
TreeSet 컬렉션:
TreeSet 컬렉션:
Set<integer> set = new TreeSet();
set.add(13);
set.add(23);
set.add(23);
set.add(11);
System.out.println(set);
set.remove(23);
System.out.println(set);</integer>
출력 결과:
위의 코드와 출력 결과를 통해 TreeSet의 특징이 정렬인 이유와 저장되는 데이터가 정렬에 따라 저장되는 이유를 문자 그대로 이해할 수 있습니다. Java의 기본 정렬 방법을 기준으로 정렬합니다.
단, 이때 People 객체 등의 Custom 객체를 저장하면 TreeSet을 직접 정렬할 수 없어 오류가 발생하게 됩니다!
//People类: public class People{ private String name; private int age; private String classroom; public People(){ } public People(String name, int age, String classroom) { this.name = name; this.age = age; this.classroom = classroom; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getClassroom() { return classroom; } public void setClassroom(String classroom) { this.classroom = classroom; } @Override public String toString() { return "People{" + "name='" + name + '\'' + ", age=" + age + ", classroom='" + classroom + '\'' + '}'; } } //main方法: public static void main(String[] args) { Set<people> p = new TreeSet(); p.add(new People("张三",19,"智能")); p.add(new People("李四",18,"数据库")); p.add(new People("王五",20,"渗透")); System.out.println(p); }</people>이 문제를 해결하려면 TreeSet 컬렉션의 저장 유형을 사용자 정의해야 합니다. 이 문제를 해결하는 방법에는 두 가지가 있습니다.
One
은 클래스를 사용자 정의하여 Comparable 인터페이스를 구현하고 CompareTo 메서드를 재정의하는 것입니다. 규칙을 지정하기 위해 ;The other
는 규칙 정의를 위한 자체 비교기 개체가 있는 컬렉션입니다.방법 1: Custom 클래스는 Comparable 인터페이스를 구현하고 CompareTo 메서드를 다시 작성하여 비교 규칙을 지정합니다(여기서는 중복되고 관련 없는 코드는 설명하지 않고 코드의 중요한 부분만 표시합니다)
//改变的第一个地方:实现Comparable类 public class People implements Comparable<people> { //改变的第二个地方:重写Comparable类中的compareTo方法 @Override public int compareTo(People o) { return this.age-o.age; } }</people>출력 결과 (Age 비교에 따라):
재정의된 메서드에서 반환 후의 코드는 개체가 어떤 기준에 따라 비교될지 결정합니다. 비교 규칙은 다음과 같습니다.
첫 번째 요소를 다음과 같이 간주합니다. 두 번째 요소보다 큼 그냥 양의 정수를 반환하세요
첫 번째 요소가 두 번째 요소보다 작다고 생각되면 그냥 음의 정수를 반환하세요
- 첫 번째 요소가 두 번째 요소와 같다고 생각되면 0을 반환하세요. 이번에는 Treeset 컬렉션이 하나의 요소만 유지하므로 두 요소가 중복된 것으로 간주됩니다
- 방법 2:
- 세트에는 규칙 정의를 위한 자체 비교 개체가 제공됩니다
Set<people> p = new TreeSet(new Comparator<people>() { @Override public int compare(People o1, People o2) { return o1.getAge()-o2.getAge(); } });</people></people>생성을 변경했습니다. 원본을 기준으로 설정하고 비교 기준은 이전 정의 방법과 유사하지만 상대적으로 이전 방법보다 이 방법이 더 편리하고 빠릅니다. 여기에서는 이전에 배운 지식 "람다 표현식" 중 일부를 검토하고 코드 블록을 단순화할 수도 있습니다.
Set<people> p = new TreeSet((o1, o2) -> o1.getAge()-o2.getAge());</people>람다 표현식을 공부하지 않았거나 람다 표현식에 대한 지식이 명확하지 않은 경우 Java에서 람다 표현식을 이해하는 방법을 읽어보세요. 이 문서의 간단한 설명이 도움이 될 수 있습니다.
추천 학습: "java 비디오 튜토리얼"
위 내용은 Java에서 집합 컬렉션을 이해하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

이 기사에서는 Java 프로젝트 관리, 구축 자동화 및 종속성 해상도에 Maven 및 Gradle을 사용하여 접근 방식과 최적화 전략을 비교합니다.

이 기사에서는 Maven 및 Gradle과 같은 도구를 사용하여 적절한 버전 및 종속성 관리로 사용자 정의 Java 라이브러리 (JAR Files)를 작성하고 사용하는 것에 대해 설명합니다.

이 기사는 카페인 및 구아바 캐시를 사용하여 자바에서 다단계 캐싱을 구현하여 응용 프로그램 성능을 향상시키는 것에 대해 설명합니다. 구성 및 퇴거 정책 관리 Best Pra와 함께 설정, 통합 및 성능 이점을 다룹니다.

이 기사는 캐싱 및 게으른 하중과 같은 고급 기능을 사용하여 객체 관계 매핑에 JPA를 사용하는 것에 대해 설명합니다. 잠재적 인 함정을 강조하면서 성능을 최적화하기위한 설정, 엔티티 매핑 및 모범 사례를 다룹니다. [159 문자]

Java의 클래스 로딩에는 부트 스트랩, 확장 및 응용 프로그램 클래스 로더가있는 계층 적 시스템을 사용하여 클래스로드, 링크 및 초기화 클래스가 포함됩니다. 학부모 위임 모델은 핵심 클래스가 먼저로드되어 사용자 정의 클래스 LOA에 영향을 미치도록합니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구

WebStorm Mac 버전
유용한 JavaScript 개발 도구

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

Dreamweaver Mac版
시각적 웹 개발 도구
