Java 정수 배열과 일반 배열은 Java 프로그래밍에서 일반적으로 사용되는 데이터 구조입니다. 정수 배열은 정수 유형의 데이터만 저장할 수 있는 특정 유형의 배열입니다. 일반 배열은 모든 유형의 데이터를 저장할 수 있는 보다 유연한 배열 유형입니다. Java에서는 정수 배열과 일반 배열을 사용하여 정렬, 검색, 삽입, 삭제 및 기타 작업과 같은 다양한 기능을 구현할 수 있습니다. 이 기사에서는 독자가 이 두 가지 배열 유형을 더 잘 이해하고 적용할 수 있도록 Java 정수 배열과 일반 배열의 기본 개념과 일반적인 작업을 소개합니다.
The Princeton Review의 "ap Computer science a prep" 2022년판에는 다음 코드를 사용하는 샘플 질문이 포함되어 있습니다.
으아악Java 버전arraylist<int>
是有效的构造?我的理解是,在所有情况下都需要是 arraylist<integer>
。使用 java 17 和 21(这是我的系统上安装的),arraylist<int>
会产生 unexpected type
오류가 있나요?
이를 arraylist<integer>[] data
,我们如何正确实例化它?显而易见的解决方案是 data = new arraylist<integer>[10]
로 정의하면(10개의 arraylist가 필요하다고 가정) Java는 일반 배열을 지원하지 않으므로 일반 배열을 생성하는 동안 실패합니다.
이 책에 오류가 있는지, 아니면 Java에 대한 이해가 전혀 부족한지 이해하려고 노력하고 있습니다. 감사해요!
아니요. 안 돼요. 제네릭은 기본 유형을 포함할 수 없으며 이를 포함할 수 있는 Java 버전조차 없습니다(만약 가능하다면, 특히 이를 제거하는 것이 큰 문제가 될 것이라고 생각하지 않습니까? Java는 이전 버전과의 호환성을 거의 깨지지 않습니다! )
불가능. 올바르게 수 인스턴스화 2할 수 없습니다. 기본이 아닌 유형의 배열을 갖는 것은 의미가 없습니다. List<List<Integer>>
在所有方面都优于 List<Integer>[]
List<List<Integer>>는 모든 면에서
캐주얼 웹 검색으로는 책의 특정 내용을 찾지 못했고, 제공한 링크도 찾지 못했습니다(찾기 어렵습니다. 의심할 바 없이 저작권이 있고 저자가 원하지 않은 것 같습니다). ). 내가 찾고 있는 핵심은 해당 장에서 그것이 불가능하다는 왜
, 또는 그것이 나쁜 생각이라는 것을 설명하는 맥락, 또는 글쎄, 당신이 강조하고 있는 문제가 바로 이 책의 내용임을 보여주는 모든 것입니다. 당신이 표현하려는 요점에 대해.이것이 책에 없고 유효한 Java라고 주장하거나 어떤 식으로든 관련이 있다고 주장한다면 그것은 쓰레기 책입니다. 아마 그래서 온라인에서 찾을 수 없을 것 같아요 :)
요약하자면:
List<int>
List<int>를 생성할 수 없습니다. 지금은 그렇게 할 수 없습니다. 당신은 결코 그것을 할 수 없었습니다. 1
List<Integer>[]
是白痴。任何代码都不应该这样写。数组有各种各样的缺点。它们的优点很少;它们的优点在这种情况下是无关紧要的,这就是数组确实存在的原因(部分作为低级“粘合剂” - java.util.ArrayList
的实现是用 java 编写的,并在内部使用 Object[]
。有些东西必须- 部分原因是 int[]
目前在空间和时间上确实比 List<Integer>
[1]아마도 JDK25+ 주변 아마도 가능 - Project Valhalla는 표준 참조 유형과 유사하지만 기본 요소처럼 구현하고 동작하는 코딩 가능한 데이터 유형을 생성하는 방법을 찾으려고 노력하는 OpenJDK 팀입니다. List<int>
可能可以变成一个东西。特别是这部分(尝试将 int
仅视为 j.l.Integer
的值类型变体,并使这些类型在泛型中工作)是 Valhalla 项目尚未真正解决的问题,而且可能永远不会解决 - 有显着的向后兼容性问题。例如 j.u.List
接口如何具有方法 remove(int x)
,该方法删除索引 int x
处的对象,以及方法 remove(Object o)
,该方法扫描列表,比较每个对象在 o
的列表中 - 一旦找到匹配项(item.equals(o)
是 true
),即被删除,并且 remove
方法返回。除了以下问题之外: remove()
、contains()
等将 Object
作为参数,而不是 E
(因为你可以询问苹果列表中是否有给定的梨。答案非常简单:不,但是,这不是不合逻辑的问题,因此为什么做出这个选择) - 尝试统一泛型和基元意味着两个签名现在都是 remove(int)
이것은 분명히 불가능합니다. 이것은 발할라의 가장 까다로운 부분이며 이것이 결코 일어나지 않을 수 있는 백만 가지 이유 중 하나입니다. 이에 대해 더 알고 싶거나 최신 정보를 얻으려면 JEP 218을 확인하세요. 이 편집 내용은 @M.Justin의 댓글로 작성되었습니다 :)
[2] "적절하다"는 주관적인 용어입니다. 여기서는 예상한 대로 정확하게 정의합니다. 컴파일러에서 경고가 없고 @SuppressWarnings
。也可能定义为:在不破坏数组所做的承诺的情况下 - 这也是不可能的(一个“承诺”是数组可以在运行时通过 arrRef.getClass() 告诉您其组件类型.getComponentType()
。简单地说,这只能告诉你:我是一个 ArrayList
引用的数组 - 它不能告诉你 ArrayList<Integer>
。只有 ArrayList
가 필요하지 않습니다.
ArrayList<int>
은 유효한 구문인가요? - 아니요. Java에서는 일반 유형이 기본 데이터 유형에서 작동하지 않습니다.
어떻게 인스턴스화 ArrayList<Integer>[]
합니까? - 다음과 같이 할 수 있습니다 -
List<Integer>[] a = new ArrayList[10];
Java에서는 일반 배열을 생성할 수 없지만 객체 배열(이 경우 ArrayList)은 간단히 생성할 수 있습니다. 확인되지 않았거나 안전하지 않은 작업에 대한 경고가 표시되지만 @SuppressWarnings
주석을 사용하면 이 문제를 극복할 수 있습니다.
위 내용은 Java 정수 배열 및 일반 배열의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!