it-swarm.com.ru

Распечатать ArrayList

У меня есть ArrayList, который содержит объекты Address.

Как мне распечатать значения этого ArrayList, то есть я распечатываю содержимое массива, в данном случае чисел.

Я могу только заставить его распечатать фактический адрес памяти массива с этим кодом:

for(int i = 0; i < houseAddress.size(); i++) {   
    System.out.print(houseAddress.get(i));
}  
63
dancooper93
Arrays.toString(list.toArray())
83
odoepner

Добавьте метод toString() в свой класс address, затем выполните

System.out.println(Arrays.toString(houseAddress));
16
Ashwinee K Jha

Из того, что я понимаю, вы пытаетесь напечатать ArrayList массивов, и единственный способ показать это 

System.out.println(Arrays.deepToString(list.toArray()));
8
Ben Dworkin

поскольку вы не предоставили пользовательскую реализацию для метода toString(), он вызывает значение по умолчанию, по которому будет напечатан адрес в памяти для этого объекта 

решение в вашем классе Address переопределяет метод 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 

8
confucius

Вы говорите, что 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)));
}
5
JoshBramlett

Вы можете просто дать это как:

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

Ваш вывод будет выглядеть как [address1, address2, address3]

Это потому, что класс ArrayList или его суперкласс будут иметь переопределенную функцию toString ().

Надеюсь это поможет.

4
Suraj

предполагается, что у вас есть список номеров, как это

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);
4
Ragulan28
public void printList(ArrayList<Address> list){
    for(Address elem : list){
        System.out.println(elem+"  ");
    }
}
4
Love Bisaria

Поместите houseAddress.get (i) в скобки и вызовите функцию .toString (): т.е. смотрите ниже

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

Я не уверен, что я понял понятие адресов (я предполагаю, что houseAddress здесь), но если вы ищете способ a, чтобы напечатать ArrayList, вот вам:

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

Это помогло мне:

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

Поскольку Java 8 , вы можете использовать метод forEach () из интерфейса Iterable.
Это метод по умолчанию. В качестве аргумента он принимает объект класса, который реализует функциональный интерфейс Consumer. Вы можете реализовать Consumer локально тремя способами:

С анонимный класс :

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 () обеспечивает печать списка в одном формате.

1
Michał Szewczyk

Вы даже можете использовать расширенный цикл for или итератор, например

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

Вы можете изменить его на любой тип данных houseAddress, что позволит избежать ненужных преобразований 

0
Ishan Srivastava

если вы сделаете @Override общедоступной String toString () в качестве комментариев, вы получите те же результаты, что и вы. Но если вы реализуете свой метод toString (), он будет работать.

открытый класс 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);
}

}

адрес класса { private int addr; публичный адрес (int i) { addr = i; }

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

}

0
user7194131

вы можете использовать формат печати, если вы просто хотите напечатать элемент на консоли.

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

Убедитесь, что у вас есть получатель в классе адресов House, а затем используйте:

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

Вы можете использовать итератор. Это самая простая и наименее противоречивая вещь, которую можно сделать здесь. Скажем, houseAddress имеет значения типа данных String

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

Примечание: вы можете даже использовать расширенный цикл для этого, как я уже упоминал в другом ответе

0
Ishan Srivastava