ArrayList 인쇄


82

Address 개체가 포함 된 ArrayList가 있습니다.

이 ArrayList의 값을 어떻게 인쇄합니까? 즉, Array의 내용,이 경우 숫자를 인쇄합니다.

이 코드를 사용하여 배열의 실제 메모리 주소 만 출력 할 수 있습니다.

for(int i = 0; i < houseAddress.size(); i++) {   
    System.out.print(houseAddress.get(i));
}  

메모리의 주소 위치를 원하십니까?
Paul Nikonowicz 2012

죄송합니다. 무슨 말인지 모르겠습니다. arraylist는 배열을 가리키는 주소를 저장하고 있고 배열의 내용을 인쇄하고 싶지만 어떻게해야할지 모르겠습니다.
dancooper93

나는 그것을 더 명확하게하기 위해 질문을 바꾸려고 노력했다.
antony.trupe 2012

주소는 집 주소를 의미합니다. 나는 생각한다.
Kuldeep Jain

1
houseAddress변수 의 선언 과 포함 된 요소에 대한 샘플 코드를 알려주십시오.
Louis Wasserman 2012

답변:


112

list.toString ()이면 충분합니다.

인터페이스 List는 toString ()에 대한 계약을 정의하지 않지만 AbstractCollection 기본 클래스는 ArrayList가 상속하는 유용한 구현을 제공합니다.


동일한 출력이 System.out.println (list)에 의해 인쇄됩니다.
Asha

4
list is houseAddress here :Arrays.toString(houseAddress.toArray())
Beginner

3
AbstractCollection은 이미 toString()해당 요소의 내용을 인쇄하도록 재정의 합니다. 따라서 모든 요소를 list.toString()인쇄합니다 toString(). 이는 모든 컬렉션에 해당됩니다.
Hanif

20

클래스에 toString()메서드를 추가 address한 다음

System.out.println(Arrays.toString(houseAddress));

39
이것은 배열 목록이 아닌 배열에서만 작동합니다. 배열 유형이 아니므 houseAddress로에 대한 인수로 제공 할 수 없습니다 Arrays.toString().
beckah

내 생각에 루핑은 여기에서만 가능한 방법입니다. 누군가가 더 나은 옵션을 알고 있다면 공유하십시오.
geniushkg

17

내가 이해하는 바에서 배열의 ArrayList를 인쇄하려고 시도하고 있으며 표시하는 한 가지 방법은

System.out.println(Arrays.deepToString(list.toArray()));

9

사용자 정의 구현을 제공하지 않았기 때문에 toString()메서드에 해당 개체의 메모리에 주소를 인쇄 할 기본값을 호출합니다.

주소 클래스의 솔루션 은 다음 toString()과 같은 방법을 재정의합니다.

public class Address {

int addressNo ; 
....
....
...

protected String toString(){
    return Integer.toString(addressNo);
}

이제 전화 할 때

houseAddress.get(i)  in the `System.out.print()` method like this

System.out.print( houseAddress.get(i) )toString()Address객체가 호출된다


7

간단히 다음과 같이 줄 수 있습니다.

System.out.println("Address:" +houseAddress);

출력은 다음과 같습니다. [address1, address2, address3]

이는 ArrayList 클래스 또는 해당 수퍼 클래스에 toString () 함수가 재정의되기 때문입니다.

도움이 되었기를 바랍니다.


7

그런 숫자 목록이있는 assium

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);

목록을 인쇄하면

//method 1
// Conventional way of printing arraylist
for (int number : numbers) {
    System.out.print(number);
}

//method 2
// Lambda Expression to print arraylist
numbers.forEach((Integer value) -> System.out.print(value));

//method 3
// Lambda Expression to print arraylist
numbers.forEach(value -> System.out.print(value));


//method 4
// Lambda Expression (method reference) to print arraylist
numbers.forEach(System.out::print);

5

그것이 ArrayList배열의 주소를 저장하는 것입니다.toString 통화 또는 그 무엇을있는 거 저장 실제로 때문에?

ArrayList배열 이있는 경우 (예 :

int[] arr = {1, 2, 3};
houseAddress.add(arr);

그런 다음 호출해야하는 배열 값을 인쇄하려면 다음을 수행하십시오 Arrays.deepToString.

for (int i = 0; i < houseAddress.size(); i++) {
     System.out.println(Arrays.deepToString(houseAddress.get(i)));
}

4
public void printList(ArrayList<Address> list){
    for(Address elem : list){
        System.out.println(elem+"  ");
    }
}

이것은 OP의 현재 코드와 다르지 않습니다. 문제는 남아 있습니다.

3

때문에 자바 8 , 당신은 사용할 수 있습니다 대해 forEach () 에서 방법 의 Iterable 인터페이스를 제공합니다.
기본 방법입니다. 인수로서 기능적 인터페이스 Consumer 를 구현하는 클래스의 객체를 취합니다 . 당신은 세 가지 방법으로 로컬 소비자를 구현할 수 있습니다

으로 annonymous 클래스 :

houseAddress.forEach(new Consumer<String>() {
    @Override
    public void accept(String s) {
        System.out.println(s);
    }
}); 

람다 식 :

houseAddress.forEach(s -> System.out.println(s));

또는 메서드 참조 를 사용하여 :

houseAddress.forEach(System.out::print);

이 인쇄 방법은 Iterable 인터페이스의 모든 구현에서 작동합니다 .
이들 모두는 요소가 인쇄되는 방법을 정의하는 방법을 제공하는 반면 toString () 은 하나의 형식으로 목록을 인쇄하도록 강제합니다.


3

넣고 houseAddress.get(i)괄호와 전화 내부 .toString()기능 : 즉, 아래를 참조하십시오

for(int i = 0; i < houseAddress.size(); i++) {
    System.out.print((houseAddress.get(i)).toString());
}

@Mr. Goose 나는 당신의 질문을 아주 명확하게 이해하지 못합니다. 무슨 뜻입니까?
21stking 2014

.toString ()에 대한 호출은 중복됩니다.
Gabriel Pellegrino 19

2

주소의 개념을 이해했는지 확실하지 않지만 (여기서 houseAddress라고 가정합니다) ArrayList를 인쇄하는 방법을 찾고 있다면 여기에 있습니다.

System.out.println(houseAddress.toString().replaceAll("\\[\\]", ""));

2
 public static void main(String[] args) {
        List<Moyen> list = new ArrayList<Moyen>();
        Moyen m1 = new Moyen();
        m1.setCodification("c1");
        m1.setCapacityManager("Avinash");
        Moyen m2 = new Moyen();
        m2.setCodification("c1");
        m2.setCapacityManager("Avinash");
        Moyen m3 = new Moyen();
        m3.setCodification("c1");
        m3.setCapacityManager("Avinash");

        list.add(m1);
        list.add(m2);
        list.add(m3);
        System.out.println(Arrays.toString(list.toArray()));
    }

2

ArrayList를 인쇄하는 가장 간단한 방법은 toString을 사용하는 것입니다.

List<String> a=new ArrayList<>();
    a.add("111");
    a.add("112");
    a.add("113");
    System.out.println(a.toString());

산출

[111, 112, 113]


2

반복자를 사용할 수 있습니다. 여기에서 할 수있는 가장 간단하고 논란이 적은 일입니다. Say houseAddress에는 데이터 유형의 값이 있습니다.String

Iterator<String> iterator = houseAddress.iterator();
while (iterator.hasNext()) {
    out.println(iterator.next());
}

참고 : 다른 답변에서 언급했듯이 향상된 for 루프를 사용할 수도 있습니다.


1
추신 그것은 당신이 여기에서 ArrayList를 Array로 변환하고 그것을 인쇄하기 위해 문자열로 변환하는 것과 같은 불필요한 변환을 수행하지 않기 때문에 가장 논쟁의 여지가 없습니다
Ishan Srivastava

1

이것은 나에게 도움이되었습니다.

System.out.println(Arrays.toString(codeLangArray.toArray()));

1

@Override public String toString ()을 주석으로 만들면 동일한 결과를 얻을 수 있습니다. 그러나 toString () 메서드를 구현하면 작동합니다.

public class PrintingComplexArrayList {

public static void main(String[] args) {
    List houseAddress = new ArrayList();
    insertAddress(houseAddress);
    printMe1(houseAddress);
    printMe2(houseAddress);
}

private static void insertAddress(List address)
{
    address.add(new Address(1));
    address.add(new Address(2));
    address.add(new Address(3));
    address.add(new Address(4));
}
private static void printMe1(List address)
{
    for (int i=0; i<address.size(); i++)
        System.out.println(address.get(i));
}

private static void printMe2(List address)
{
    System.out.println(address);
}

}

class Address {private int addr; 공개 주소 (int i) {addr = i; }

@Override public String toString()
{
    Integer iAddr = new Integer (addr);
    return iAddr.toString();
}

}


1

향상된 for 루프 또는 다음과 같은 반복기를 사용할 수도 있습니다.

for (String name : houseAddress) {
    System.out.println(name);
}

데이터 유형 houseAddress이 무엇이든 변경할 수 있으며 불필요한 변환을 피할 수 있습니다.


1

JSON

대체 솔루션은 목록을 JSON 형식 으로 변환 하고 Json-String을 인쇄하는 것입니다. 장점은 toString(). 추가로 그것은 다른 Object또는Collection 즉석에서 .

Google의 Gson을 사용한 예 :

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

...
public static void printJsonString(Object o) {
    GsonBuilder gsonBuilder = new GsonBuilder();
    /*
     * Some options for GsonBuilder like setting dateformat or pretty printing
     */
    Gson gson = gsonBuilder.create();
    String json= gson.toJson(o);
    System.out.println(json);
}

0

집 주소 클래스에 게터가 있는지 확인하고 다음을 사용하십시오.

for(int i = 0; i < houseAddress.size(); i++) {   
    System.out.print(houseAddress.get(i)**.getAddress()**);
}

1
Stack Overflow에 오신 것을 환영합니다 . 답변 방법 섹션 검토하고 그에 따라 질문을 수정 하십시오.
compor

0

콘솔에서 요소를 인쇄하려는 경우 인쇄 형식을 사용할 수 있습니다.

for(int i = 0; i < houseAddress.size(); i++) {   
    System.out.printf("%s", houseAddress.get(i));
}  

0

즉 가정 houseAddress.get(i)입니다 ArrayList추가 할 수있는 toString()애프터 ArrayList:

for(int i = 0; i < houseAddress.size(); i++) {   
    System.out.print(houseAddress.get(i).toString());
} 

일반적인 예 :

ArrayList<Double> a = new ArrayList();
a.add(2.);
a.add(32.);
System.out.println(a.toString());
// output
// [2.0, 32.0]

0

이것은 ArrayList에 값을 추가하고 ArrayList 값을 인쇄하는 간단한 코드입니다.

public class Samim {

public static void main(String args[]) {
    // Declare list
    List<String> list = new ArrayList<>();

    // Add value in list
    list.add("First Value ArrayPosition=0");
    list.add("Second Value ArrayPosition=1");
    list.add("Third Value ArrayPosition=2");
    list.add("Fourth Value ArrayPosition=3");
    list.add("Fifth Value ArrayPosition=4");
    list.add("Sixth Value ArrayPosition=5");
    list.add("Seventh Value ArrayPosition=6");

    String[] objects1 = list.toArray(new String[0]);

    // Print Position Value
    System.err.println(objects1[2]);

    // Print All Value
    for (String val : objects1) {
        System.out.println(val);
      }
    }
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.