>Java >Java에서 2D 배열의 행을 섞는 방법은 무엇입니까?

Java에서 2D 배열의 행을 섞는 방법은 무엇입니까?

PHPz
PHPz앞으로
2024-02-09 16:15:20943검색

Java에서 2차원 배열의 행을 스크램블하는 방법은 무엇인가요? 많은 개발자들이 자주 겪는 문제입니다. Collections 클래스의 shuffle() 메서드를 사용하면 2차원 배열의 행을 섞을 수 있습니다. 이 메서드는 컬렉션의 요소 순서를 무작위로 섞을 수 있습니다. 먼저 2차원 배열을 List 형식으로 변환한 후 shuffle() 메서드를 사용하여 목록을 무작위로 정렬해야 합니다. 마지막으로 목록을 다시 2차원 배열로 변환하면 행 섞기가 완료됩니다. 이 방법은 간단하고 구현하기 쉬우며 2차원 배열의 행을 효과적으로 스크램블할 수 있으며 개발자에게 보다 유연한 데이터 처리 방법을 제공합니다.

질문 내용

CSV 파일을 읽고 데이터 전처리를 수행하는 코드를 작성했는데 순서는 변경할 수 없지만 열 대신 2D 배열의 행을 섞어야 합니다.

제가 겪고 있는 문제는 2D 배열의 행과 열이 뒤섞여 있다는 것인데 어떻게 해결해야 할지 모르겠습니다.

으아악

보시다시피 다른 방법도 있지만 이 shuffle2darray() 방법만 제대로 작동합니다.

이 방법으로 데이터를 무작위로 10개로 분할하여 10개의 교차 검증을 수행할 수 있습니다

코드에 인쇄 문을 삽입하고 셔플을 시도하기 전후에 2D 배열을 확인한 다음 csv 파일을 확인하여 행의 순서가 올바른지 확인했습니다.

다음은 필터링 전의 작은 예입니다.

cpi_9606.ensp00000000233cpi_9606.ensp00000000412cpi_9606.ensp00000000442cpi_9606.ensp00000001008cpi_9606.ensp00000001146cpi_9606.ensp00000002165cpi_9606.ensp00000002829cpi_9606.ensp00000003084cpi_9606.ensp0000000310000000000000000000000000000180
열을 필터링하고 섞은 후:

cpi_9606.ENSP00000000442cpi_9606.ENSP00000001008cpi_9606.ENSP00000003084cpi_9606.ENSP00000003100cpi_9606.ENSP00000005178cpi_9606.ENSP00000011292cpi_9606.ENSP00000011653cpi_9606.ENSP00000012443cpi_9606.ENSP00000013034cpi_9606.ENSP000000149300900000900000900000009289003383222360000000
해결 방법

코드 조각에 핵심 요소인 정렬할 배열이 포함되지 않았습니다.

어둠 속에서 열심히 시도해 보면 다음과 같을 것 같아요:

으아악

셔플하려면 라이너입니다. 자신이 소유한 모든 코드를 다른 사람에게 양도할 수 있습니다:

으아악

그렇다면 이것이 왜 작동하는 걸까요?

2차원 배열이라는 것이 없거든요. java에는 전혀 없습니다.

당신이 소유한 것

. int[][] allfeatures 不是二维数组。它是一个一维数组,其组件类型为 int 数组。因此, arrays.aslist(allfeatures) 非常好,因为您有一个对象数组(不是基元) - 每个对象都是一个 int 数组。该表达式的类型为 list<int[]>

지원되는 작업이 매우 좋습니다. arrays.aslist 返回一个仍然由底层数组支持的列表。因此, .set() 有效,但 .add() 无效(因为数组可以更改其元素,但不能增长或缩小)。 collections.shuffle 可以打乱任何列表,并且仅使用 .set.get 来执行此操作: arrays.aslist

이 모든 것의 결과는 이것이 자체적으로 크기가 조정된다는 것입니다

. allfeatures

변경하지 않고

을 유지하려면 먼저 복제하세요. allfeatures 으아악

위 내용은 Java에서 2D 배열의 행을 섞는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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