>  기사  >  Java 정수 배열 및 일반 배열

Java 정수 배열 및 일반 배열

PHPz
PHPz앞으로
2024-02-09 10:48:221111검색

Java 정수 배열과 일반 배열은 Java 프로그래밍에서 일반적으로 사용되는 데이터 구조입니다. 정수 배열은 정수 유형의 데이터만 저장할 수 있는 특정 유형의 배열입니다. 일반 배열은 모든 유형의 데이터를 저장할 수 있는 보다 유연한 배열 유형입니다. Java에서는 정수 배열과 일반 배열을 사용하여 정렬, 검색, 삽입, 삭제 및 기타 작업과 같은 다양한 기능을 구현할 수 있습니다. 이 기사에서는 독자가 이 두 가지 배열 유형을 더 잘 이해하고 적용할 수 있도록 Java 정수 배열과 일반 배열의 기본 개념과 일반적인 작업을 소개합니다.

질문 내용

The Princeton Review의 "ap Computer science a prep" 2022년판에는 다음 코드를 사용하는 샘플 질문이 포함되어 있습니다.

으아악
  1. Java 버전arraylist<int> 是有效的构造?我的理解是,在所有情况下都需要是 arraylist<integer>。使用 java 17 和 21(这是我的系统上安装的),arraylist<int> 会产生 unexpected type 오류가 있나요?

  2. 이를 arraylist<integer>[] data,我们如何正确实例化它?显而易见的解决方案是 data = new arraylist<integer>[10]로 정의하면(10개의 arraylist가 필요하다고 가정) Java는 일반 배열을 지원하지 않으므로 일반 배열을 생성하는 동안 실패합니다.

이 책에 오류가 있는지, 아니면 Java에 대한 이해가 전혀 부족한지 이해하려고 노력하고 있습니다. 감사해요!

해결책

아니요. 안 돼요. 제네릭은 기본 유형을 포함할 수 없으며 이를 포함할 수 있는 Java 버전조차 없습니다(만약 가능하다면, 특히 이를 제거하는 것이 큰 문제가 될 것이라고 생각하지 않습니까? Java는 이전 버전과의 호환성을 거의 깨지지 않습니다! )

불가능. 올바르게 인스턴스화 2할 수 없습니다. 기본이 아닌 유형의 배열을 갖는 것은 의미가 없습니다. List<List<Integer>> 在所有方面都优于 List<Integer>[]List<List<Integer>>는 모든 면에서

List<Integer>[]보다 낫습니다. 그러니 목록의 목록을 만드십시오.

캐주얼 웹 검색으로는 책의 특정 내용을 찾지 못했고, 제공한 링크도 찾지 못했습니다(찾기 어렵습니다. 의심할 바 없이 저작권이 있고 저자가 원하지 않은 것 같습니다). ). 내가 찾고 있는 핵심은 해당 장에서 그것이 불가능하다는

, 또는 그것이 나쁜 생각이라는 것을 설명하는 맥락, 또는 글쎄, 당신이 강조하고 있는 문제가 바로 이 책의 내용임을 보여주는 모든 것입니다. 당신이 표현하려는 요점에 대해.

이것이 책에 없고 유효한 Java라고 주장하거나 어떤 식으로든 관련이 있다고 주장한다면 그것은 쓰레기 책입니다. 아마 그래서 온라인에서 찾을 수 없을 것 같아요 :)

요약하자면:
  1. List<int> List<int>를 생성할 수 없습니다. 지금은 그렇게 할 수 없습니다. 당신은 결코 그것을 할 수 없었습니다. 1

  2. List<Integer>[] 是白痴。任何代码都不应该这样写。数组有各种各样的缺点。它们的优点很少;它们的优点在这种情况下是无关紧要的,这就是数组确实存在的原因(部分作为低级“粘合剂” - java.util.ArrayList 的实现是用 java 编写的,并在内部使用 Object[] 。有些东西必须- 部分原因是 int[] 目前在空间和时间上确实比 List<Integer>

    List<Integer>[]는 바보입니다. 어떤 코드도 이와 같이 작성되어서는 안 됩니다. 배열에는 다양한 단점이 있습니다. 장점은 거의 없습니다. 이 경우 장점은 관련이 없습니다. 이것이 배열이 존재하는 이유입니다(부분적으로 낮은 수준의 "접착제" - 🎜java.util.ArrayList의 구현은 Java로 작성되고 🎜Object를 사용함). [] 내부적으로 뭔가를 해야 합니다. 부분적으로는 🎜int[]가 현재 🎜List<Integer>보다 훨씬 더 공간 및 시간 집약적이기 때문입니다. 어리석은 아이디어를 작성하는 방법에 대해 깊이 다루는 책은... Java 경력이 15년인 사람에게는 이상합니다. 원본을 가르치는 것과 같습니다. 하지만 포드 모델 T의 기어박스는 자동차와 관련이 없습니다.

[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가 필요하지 않습니다.

  1. ArrayList<int>은 유효한 구문인가요? - 아니요. Java에서는 일반 유형이 기본 데이터 유형에서 작동하지 않습니다.

  2. 어떻게 인스턴스화 ArrayList<Integer>[]합니까? - 다음과 같이 할 수 있습니다 -

    List<Integer>[] a = new ArrayList[10]; Java에서는 일반 배열을 생성할 수 없지만 객체 배열(이 경우 ArrayList)은 간단히 생성할 수 있습니다. 확인되지 않았거나 안전하지 않은 작업에 대한 경고가 표시되지만 @SuppressWarnings주석을 사용하면 이 문제를 극복할 수 있습니다.

위 내용은 Java 정수 배열 및 일반 배열의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제