2016-06-13 3 views
0

내 코드는 지금까지 있습니다 :루프없이 ArrayList의 값과 인덱스 번호를 인쇄하는 방법은 무엇입니까? 여기

import java.util.ArrayList; 

public class BasicArraylists0 
{ 
    public static void main(String[] args) 
    { 
     ArrayList arrayList = new ArrayList(); 

     arrayList.add(-113); 
     arrayList.add(-113); 

     System.out.println(arrayList); // prints [-113, -113] 
    } 
} 

내가 원하는 코드를이 값을 출력하도록,이 경우 -113s, 및 루프 또는 동안 어떤을 사용하지 않고 어떤 괄호가없는 인덱스?

예를 들어, 내가

같은 것을 인쇄하고 싶은 등 및 "슬롯 1 -113이있다", "슬롯 0 -113이있다".

좋아, 여기에 질문 :..

는 "정수를 개최 할 수있는 ArrayList를 만들기 그런 다음 화면에서의 ArrayList의 내용을 표시 ArrayList의에 숫자 -113의 열 복사본을 추가

.

루프를 사용하지 말고 인덱스에 변수를 사용하지 말고 각 슬롯을 참조 할 때 리터럴 숫자를 사용해야합니다. "

+1

짧은 대답은 당신이 코드를 작성하지 않고 방법을 포맷 할 수 없습니다입니다 컬렉션을 반복하려면 루프가 필요합니다. 자바 8을 사용한다면 람다 (lambda) 기능을 사용할 수 있지만 루프를 감추는 문법적인 설탕 일 뿐이다. 루프가 여전히 있습니다. –

+1

출력에서 ​​찾고있는 것을 명확히 할 수 있습니까? '0 -113, 1 -113'과 같은 것을 찾고 있습니까? 배열을 반복하여 올바른 형식을 지정해야합니다. – user1875195

+0

@ user1875195 예. 예를 들어, "Slot 0은 -113", "Slot 1은 -113"등과 같이 인쇄하고 싶습니다. – Jiwon

답변

0

반복 형식이 없으면이를 해결할 방법이 없습니다. 가장 좋은 방법은 for 루프를 사용하는 것입니다. 대신 루프를 명시 적으로 사용하지 않고 루프 할 때 Java 8의 Stream API를 사용할 수도 있습니다. 당신이 ArrayList의 크기를 알고있는 경우

IntStream.range(0, arrayList.size()) 
     .forEach(i -> System.out.println("Slot "+i+" has a "+arrayList.get(i)); 

, 그때 당신은 그냥 복사 파스타를 수 있다고 생각 모든 것을 :

System.out.println("Slot 0 has a "+arrayList.get(0)); 
System.out.println("Slot 1 has a "+arrayList.get(1)); 
System.out.println("Slot 2 has a "+arrayList.get(2)); 
System.out.println("Slot 3 has a "+arrayList.get(3)); 
System.out.println("Slot 4 has a "+arrayList.get(4)); 
System.out.println("Slot 5 has a "+arrayList.get(5)); 
System.out.println("Slot 6 has a "+arrayList.get(6)); 
System.out.println("Slot 7 has a "+arrayList.get(7)); 
System.out.println("Slot 8 has a "+arrayList.get(8)); 
System.out.println("Slot 9 has a "+arrayList.get(9)); 
+0

감사합니다, 4castle! – Jiwon

+0

\t \t 목록 ArrayList를 = 새로운 ArrayList를() { \t \t \t 공공 문자열 toString() { \t \t \t \t 반복자 ITR = this.listIterator(); \t \t \t \t StringBuffer r = new StringBuffer(); \t \t \t \t 부울 hasNext = itr.hasNext(); \t \t \t \t 동안 (hasNext) { \t \t \t \t \t INT 인덱스 = itr.nextIndex(); \t \t \t \t \t Object o = itr.next(); \t \t \t \t \t 경우 (O == 이것을) \t \t \t \t \t \t r.append (""); 다른 \t \t \t \t \t \t \t는 \t \t \t \t r.append ("슬롯"+ 인덱스 +는 + O의 "을 갖는"); \t \t \t \t \t hasNext = itr.hasNext(); \t \t \t \t \t 경우 (hasNext) \t \t \t \t \t \t r.append 문자 ("\ n"); \t \t \t \t} return r.toString(); \t \t \t} \t \t}}; \t \t System.out.println (arrayList.toString()); – user3136131

-1

질문이 있으시면 루프없이 전체 ArrayList를 인쇄 하시겠습니까? 그렇다면 다음 코드를 사용할 수 있습니다.

arrayList.forEach(System.out::println); 

여기에는 새로운 Java 8 lamda 기능이 사용됩니다.

+0

실제로 스트림을 여기처럼 사용할 수 없습니다. 그들은 인덱스가 출력에 있고 스트림에 인덱스 개념이 없기를 원합니다. 'Map '에 먼저 맵핑되어야하지만 그것은 효율적이지 않습니다. – 4castle

+0

아, 나는 신분증 부분을 읽지 않았다. 그가 이드를 인쇄 할 필요가 있다면 최소한 1 루프를 사용해야한다고 생각합니다. – Alberto

관련 문제