Java(컬렉션) 기반 배열에 대한 일반적인 작업 요약
아래 편집기는 Java 기반의 배열의 일반적인 작업 요약을 제공합니다( 꼭 읽어보세요). 에디터가 꽤 좋다고 생각해서 지금 공유해서 참고용으로 올려보겠습니다. 편집기를 따라가며 살펴보겠습니다.
배열에서 일반적으로 사용되는 작업
1. 배열에서 최대값과 최소값 찾기
아이디어:아래 첨자 0이 있는 요소가 최대값, 라고 가정합니다. 배열 을 탐색하여 max와 차례로 비교합니다. max보다 큰 요소가 있으면 이 값을 max에 할당합니다. 최소값은 동일합니다.
public class TestArray{ public static void main(String[] args){ int[] arr={23,45,234,576,34,87,34,12,67}; int max=arr[0]; int min=arr[0]; for(int i=0;i<arr.length;i++){ if(arr[i]>max){ max=arr[i]; } if(arr[i]<min){ min=arr[i]; } } System.out.println("数组中最大值为:"+max); System.out.println("数组中最小值为:"+min); } }
2. 배열에 요소가 존재하는지 확인
import java.util.Scanner; public class TestArray{ public static void main(String[] args){ Scanner in=new Scanner(System.in); int[] arr={23,45,234,576,34,87,34,12,67}; System.out.println("请输入你要查找的元素"); int element=in.nextInt(); int i,flag=0; for(i=0;i<arr.length;i++){ if(arr[i]==element){ flag=1; break; } } if(flag==1){ System.out.println("你要查找的元素的下标为:"+i); }else{ System.out.println("你要查找的元素不存在"); } } }
(2), 이진 검색 방법을 사용하여 요소가 있는지 확인하세요. 배열에 존재합니다.< /strong>
전제: 검색할 배열은 순서(크기순)이어야 합니다.
원리: 검색할 요소를 배열의 가운데 첨자 요소와 비교하고, 중간 요소보다 크면 오른쪽에서 검색하고, 중간 요소보다 작으면 왼쪽에서 검색합니다.
public static int binarySearch(int[] arr,int ele){ int left=0; int right=arr.length-1; int mid; int index=-1; while(left<=right){ mid=(left+right)/2; if(arr[mid]==ele){ index=mid; break; }else if(arr[mid]<ele){ left=mid+1; }else if(arr[mid]>ele){ right=mid-1; } } return index; }
3. 배열 정렬
(1), 버블 정렬< /p>
원리: 인접한 요소를 비교하여 작은 요소는 앞으로 이동하고 큰 요소는 뒤로 이동하며 최대값이 가장 크게 나타납니다지수
분석: 처음 비교하면 나중에 더 큰 것이 나타나며, 최대값이 가장 큰 지수에 순위가 매겨집니다
두 번째 비교, 최대값이 정해져 있으므로 처음 n-1개의 요소만 비교하여 두 번째로 큰 인덱스에서 두 번째로 큰 값을 결정하면 됩니다
에서 세 번째로 큰 값과 네 번째로 큰 값을 결정합니다. 턴 값.............
결론: N개의 숫자가 나열되고, 작은 숫자가 앞쪽에 더 가깝게 배치됩니다. 외부 레이어루프n-1, 내부 루프 n-1-i
public class TestArray{ public static void main(String[] args){ int[] arr={10,3,8,1,6}; //外层循环控制比较轮数 for(int i=0;i<arr.length-1;i++){ //内层循环控制每轮比较次数 for(int j=0;j<arr.length-1-i;j++){ if(arr[j]>arr[j+1]){ int temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } } } //遍历数组 for(int i=0;i<arr.length;i++){ System.out.println(arr[i]); } } }
(2), 선택 정렬
원리: 아래 첨자 0부터 시작하여 다음 요소와 비교하세요. 다음 요소가 아래 첨자가 0인 요소보다 작으면 이를 바꿉니다. 인덱스가 0인 새 요소를 다음 요소와 비교합니다. 첫 번째 완료 후 최소값은 인덱스 0에 나타납니다.
예: {10, 3, 8, 1, 6}
첫 번째 비교 라운드는 0 아래 첨자 요소부터 시작하여 순차적으로 수행됩니다. 다음과 같이 요소를 비교하려면 먼저 10과 3, 10<3을 비교하고 위치를 바꾸면 아래 첨자 0이 있는 요소는 3, {3, 10, 8, 1, 6}이 되고 3과 8, 3<8을 비교합니다. , 전치 없음, 3과 1, 3>1, 전치
1, 10, 8, 3, 6}, 그런 다음 1과 6, 1<6을 비교하고 위치를 변경하지 않습니다. 첫 번째 라운드가 끝났습니다. {1, 10, 8, 3, 6}
두 번째 비교 라운드에서는 이전 라운드에서 아래 첨자 0이 있는 요소가 최소값이라고 결정했습니다. 이번 비교 라운드는 다음에서 시작됩니다. 아래 첨자 1, 먼저 10과 8을 비교하고 {1, 8, 10, 3, 6}을 전치하고 8과 3을 비교하고 {1, 3, 10, 8, 6}을 전치하고 3과 6을 비교하지만 비교하지는 않습니다. 바꾸어 놓다. 두 번째 라운드가 끝나면 끝에서 두 번째 요소가 첨자 1에 있는 것으로 결정됩니다.
........
전체 길이를 1라운드로 비교해보세요.
public class TestArray{ public static void main(String[] args){ int[] arr={10,3,8,1,6}; for(int i=0;i<arr.length-1;i++){ for(int j=i+1;j<arr.length;j++){ if(arr[i]>arr[j]){ int temp=arr[i]; arr[i]=arr[j]; arr[j]=temp; } } } //遍历数组 for(int i=0;i<arr.length;i++){ System.out.println(arr[i]); } } }
4. 배열의 요소 삭제
(1) 아래 첨자에 따라 요소 삭제(공백은 0으로 채움)
< /p>
public static void delete(int[] arr,int index){ for(int i=index;i<arr.length-1;i++){ arr[i]=arr[i+1]; } arr[arr.length-1]=0; System.out.println(Arrays.toString(arr)); }
(2) 입력 요소에 따라 배열에서 해당 요소를 삭제합니다
< br/>
public static void delete(int[] arr,int ele){ int index=-1; for(int i=0;i<arr.length;i++){ if(arr[i]==ele){ index=i; } } for(int i=index;i<arr.length-1;i++){ arr[i]=arr[i+1]; } arr[arr.length-1]=0; System.out.println(Arrays.toString(arr)); }
Java에서는 java 제외.lang 클래스 및 인터페이스를 직접 사용할 수 있지만 다른 패키지의 클래스나 인터페이스를 사용하려면 선행 패키지가 필요합니다.
java.util.Arrays 클래스: 이 클래스에는 배열을 작동하는 데 사용되는 함수(예: 정렬 및 다양한 검색 방법).
정적 메소드로, 클래스 이름과 메소드 이름, 여기서는 int 배열을 예로 들어 보겠습니다.
1、对数组进行快速排序
Arrays.sort(int[] arr);对传入的数组默认进行升序排序
2、返回指定数组内容的字符串表现形式。
Arrays.toString(int[] arr);
3、使用二分法搜索制定数组中的某个元素的下标
Arrays.binarySearch(int[] arr);
4、将将指定的 int 值分配给指定 int 型数组的每个元素。
Arrays.fill(int[] arr,int val);
5、复制指定的数组,截取或用 0 填充(如有必要),以使副本具有指定的长度。
Arrays.copyOf(int[] arr,int newLength);它的返回值是一个数组
6、将指定数组的指定范围复制到一个新数组。 包含起始位置但不包含结束位置。
Arrays.copyOfRange(int[] arr,int from,int to);它的返回值是一个数组
其他数组知识:
1、命令行参数:可以在执行java命令时为main方法传入参数值。
用法:运行java命令时传入命令行参数: java 类名 "值1" "值2"...
public static void main(String[] args){},我们可以看到main方法是一个有参的方法,参数是一个字符串数组,在命令行为main方法传值时,传入的值都保存在args字符数组里。
注意:多个参数值之间用空格分割。参数的值将会保存到字符串数组传入main方法,下标从零开始。
在获取命令行参数时需要注意下标不能越界,最大下标应该为参数的个数-1
public static void main(String[] args){ for(int i=0;i<args.length;i++){ System.out.println(args[i]); } }
2、可变参数
可变参数是java1.5之后的新特性,可以代表零到多个相同数据类型的变量,是为了解决因参数个数的变化而导致过多的方法重载问题。
注意:
1、可变参数只能用于形式参数(方法定义时),可以把可变参数当作数组来处理。
2、一个方法在最多只能有一个可变参数,可变参数必须作为最后一个参数。
3、调用带可变参数的方法时,数据类型必须与可变参数的类型对应。
public class Test1 { public static void main(String[] args){ double sum=add(4,2.1,3.4,1.2); System.out.println(sum); } public static double add(int a,double...b){ double sum=a; for(int i=0;i<b.length;i++){ sum+=b[i]; } return sum; } }
例题:
合并数组操作:现有如下一个数组: int oldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5} 要求将以上数组中值为0的项去掉,将不为0的值存入一个新的数组,生成的新数组为: int newArr [] ={1,3,4,5,6,6,5,4,7,6,7,5}
思路: 确定出不为0的个数,这样可以开辟新数组;从旧的数组之中,取出内容,并将其赋给新开辟的数组。
public class Test1 { public static void main(String[] args){ int oldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5}; int[] arr=mergeArrays(oldArr); System.out.println(Arrays.toString(arr)); } public static int[] mergeArrays(int[] oldArr){ int count=0; for(int i=0;i<oldArr.length;i++){ if(oldArr[i]!=0){ count++; } } int[] newArr=new int[count]; int index=0; for(int i=0;i<oldArr.length;i++){ if(oldArr[i]!=0){ newArr[index]=oldArr[i]; index++; } } return newArr; } }
2、使用二分法查找有序数组中元素。找到返回索引,不存在输出-1。使用递归实现
public class Test1 { public static void main(String[] args){ int[] arr={1,2,3,4,5,6,7,8}; int index=binarySearch(arr,6,0,arr.length-1); System.out.println(index); } public static int binarySearch(int[] arr,int ele,int left,int right){ int mid=(left+right)/2; if(arr[mid]==ele){ return mid; }else if(arr[mid]<ele){ return binarySearch(arr,ele,mid+1,right); }else if(arr[mid]>ele){ return binarySearch(arr,ele,left,mid-1); } return -1; } }
위 내용은 Java(컬렉션) 기반 배열에 대한 일반적인 작업 요약의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

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

뜨거운 주제











이 기사에서는 가장 많이 묻는 Java Spring 면접 질문과 자세한 답변을 보관했습니다. 그래야 면접에 합격할 수 있습니다.

Java 8은 스트림 API를 소개하여 데이터 컬렉션을 처리하는 강력하고 표현적인 방법을 제공합니다. 그러나 스트림을 사용할 때 일반적인 질문은 다음과 같은 것입니다. 기존 루프는 조기 중단 또는 반환을 허용하지만 스트림의 Foreach 메소드는이 방법을 직접 지원하지 않습니다. 이 기사는 이유를 설명하고 스트림 처리 시스템에서 조기 종료를 구현하기위한 대체 방법을 탐색합니다. 추가 읽기 : Java Stream API 개선 스트림 foreach를 이해하십시오 Foreach 메소드는 스트림의 각 요소에서 하나의 작업을 수행하는 터미널 작동입니다. 디자인 의도입니다

PHP는 서버 측에서 널리 사용되는 스크립팅 언어이며 특히 웹 개발에 적합합니다. 1.PHP는 HTML을 포함하고 HTTP 요청 및 응답을 처리 할 수 있으며 다양한 데이터베이스를 지원할 수 있습니다. 2.PHP는 강력한 커뮤니티 지원 및 오픈 소스 리소스를 통해 동적 웹 컨텐츠, 프로세스 양식 데이터, 액세스 데이터베이스 등을 생성하는 데 사용됩니다. 3. PHP는 해석 된 언어이며, 실행 프로세스에는 어휘 분석, 문법 분석, 편집 및 실행이 포함됩니다. 4. PHP는 사용자 등록 시스템과 같은 고급 응용 프로그램을 위해 MySQL과 결합 할 수 있습니다. 5. PHP를 디버깅 할 때 error_reporting () 및 var_dump ()와 같은 함수를 사용할 수 있습니다. 6. 캐싱 메커니즘을 사용하여 PHP 코드를 최적화하고 데이터베이스 쿼리를 최적화하며 내장 기능을 사용하십시오. 7

PHP와 Python은 각각 고유 한 장점이 있으며 선택은 프로젝트 요구 사항을 기반으로해야합니다. 1.PHP는 간단한 구문과 높은 실행 효율로 웹 개발에 적합합니다. 2. Python은 간결한 구문 및 풍부한 라이브러리를 갖춘 데이터 과학 및 기계 학습에 적합합니다.

캡슐은 3 차원 기하학적 그림이며, 양쪽 끝에 실린더와 반구로 구성됩니다. 캡슐의 부피는 실린더의 부피와 양쪽 끝에 반구의 부피를 첨가하여 계산할 수 있습니다. 이 튜토리얼은 다른 방법을 사용하여 Java에서 주어진 캡슐의 부피를 계산하는 방법에 대해 논의합니다. 캡슐 볼륨 공식 캡슐 볼륨에 대한 공식은 다음과 같습니다. 캡슐 부피 = 원통형 볼륨 2 반구 볼륨 안에, R : 반구의 반경. H : 실린더의 높이 (반구 제외). 예 1 입력하다 반경 = 5 단위 높이 = 10 단위 산출 볼륨 = 1570.8 입방 단위 설명하다 공식을 사용하여 볼륨 계산 : 부피 = π × r2 × h (4

PHP와 Python은 각각 고유 한 장점이 있으며 다양한 시나리오에 적합합니다. 1.PHP는 웹 개발에 적합하며 내장 웹 서버 및 풍부한 기능 라이브러리를 제공합니다. 2. Python은 간결한 구문과 강력한 표준 라이브러리가있는 데이터 과학 및 기계 학습에 적합합니다. 선택할 때 프로젝트 요구 사항에 따라 결정해야합니다.

PHP는 특히 빠른 개발 및 동적 컨텐츠를 처리하는 데 웹 개발에 적합하지만 데이터 과학 및 엔터프라이즈 수준의 애플리케이션에는 적합하지 않습니다. Python과 비교할 때 PHP는 웹 개발에 더 많은 장점이 있지만 데이터 과학 분야에서는 Python만큼 좋지 않습니다. Java와 비교할 때 PHP는 엔터프라이즈 레벨 애플리케이션에서 더 나빠지지만 웹 개발에서는 더 유연합니다. JavaScript와 비교할 때 PHP는 백엔드 개발에서 더 간결하지만 프론트 엔드 개발에서는 JavaScript만큼 좋지 않습니다.

Java는 초보자와 숙련된 개발자 모두가 배울 수 있는 인기 있는 프로그래밍 언어입니다. 이 튜토리얼은 기본 개념부터 시작하여 고급 주제를 통해 진행됩니다. Java Development Kit를 설치한 후 간단한 "Hello, World!" 프로그램을 작성하여 프로그래밍을 연습할 수 있습니다. 코드를 이해한 후 명령 프롬프트를 사용하여 프로그램을 컴파일하고 실행하면 "Hello, World!"가 콘솔에 출력됩니다. Java를 배우면 프로그래밍 여정이 시작되고, 숙달이 깊어짐에 따라 더 복잡한 애플리케이션을 만들 수 있습니다.
