2017-02-13 1 views
0

배열과 질문을 많이 읽었지만 이에 대한 답변을 찾을 수 없습니다.nulls/empty 엘리먼트로 배열 이동하기

나도 동일합니다 배열이 있습니다

Toys[][] toys = { {toy, toy, toy, toy}, {toy}, {}, {toy,toy}, {toy} }; 

또는

Toys[][] toys = { {toy, toy, toy, toy}, {toy}, null, {toy,toy}, {toy} }; 

을 내가 왼쪽으로 널링 또는 빈 요소 뒤에 요소 (들)을 이동하기 위해 노력하고있어 그것을 이렇게 이와 같은 것입니다 :

Toys[][] toys = { {toy, toy, toy, toy}, {toy}, {toy,toy}, {toy} }; 

내가 같은 스트리밍 값을 시도했다 :

toys = (Toys[][]) Arrays.stream(toys).filter(i -> !(i == null || i.length == 0)).toArray(); 

하지만 어떤 이유로 아무것도

난 당신의 코드가 예외를 던지고 생각
+2

공식 2D 배열 대신에 'ArrayList'를 사용 해본 적이 있습니까? –

+0

분명히 나는이 목록을 작성하는 문제를 겪어서는 안된다. –

+0

스트림을 충분히 알지 못한다. 그러나 이것은 여전히 ​​간단한 변화 일 것이다. 이것은 'Array','int' 또는 any 일 수있다. 'Array' 안에'Object'가 있습니다. null 또는 공백의 경우, (인덱스를 사용해) 이동합니다. 다른 null 또는 공백이있는 경우, 2 회 쉬프트하면 (자) 생각이됩니다. 물론, 필자는 그것을 작성할 수는 없지만 최소한 시도해보십시오;) – AxelH

답변

1

하지 않습니다. 0 인수 인 toArray() 메서드는 으로 잘못 전송하는 Object[]을 반환합니다. 시도해보십시오 this overload

toys = Arrays.stream(toys) 
     .filter(i -> !(i == null || i.length == 0)) 
     .toArray(Toys[][]::new); 
+0

그것은 예외를 던지지 않고 있지만,이 방법조차도 배열을 전혀 편집하지 못합니다. 무엇이 잘못되었는지, 2 차원 배열로는 잘 작동하는 것 같지만, 2ds가 아닙니다. –

+0

@JackSmith 그게 최선입니다. 없이 [mcve]. – shmosel

+1

@JackSmith 다음은 간단한 테스트로 잘 작동 함을 보여줍니다. http://ideone.com/US5cZv – shmosel

관련 문제