Ответ 1
Arrays.toString(list.toArray())
У меня есть ArrayList, содержащий объекты Address.
Как напечатать значения этого ArrayList, то есть я распечатываю содержимое массива, в этом случае номера.
Я могу получить его, чтобы распечатать фактический адрес памяти массива с помощью этого кода:
for(int i = 0; i < houseAddress.size(); i++) {
System.out.print(houseAddress.get(i));
}
Arrays.toString(list.toArray())
Добавьте toString()
метод в ваш класс address
, затем выполните
System.out.println(Arrays.toString(houseAddress));
Из того, что я понимаю, вы пытаетесь напечатать ArrayList массивов и один из способов отображения которых будет
System.out.println(Arrays.deepToString(list.toArray()));
так как вы не предоставили настраиваемую реализацию для метода 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
будет называться
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);
Вы говорите, что 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)));
}
public void printList(ArrayList<Address> list){
for(Address elem : list){
System.out.println(elem+" ");
}
}
Вы можете просто указать его как:
System.out.println("Address:" +houseAddress);
Ваш результат будет выглядеть как [address1, address2, address3]
Это связано с тем, что класс ArrayList или его суперкласс должен иметь переопределенную функцию toString().
Надеюсь, что это поможет.
Поместите homeAddress.get(i) внутри скобок и вызовите функцию .toString(): i.e См. ниже
for(int i = 0; i < houseAddress.size(); i++) {System.out.print((houseAddress.get(i)).toString());
}
Поскольку Java 8, вы можете использовать метод forEach() из интерфейса Iterable.
Это метод по умолчанию. В качестве аргумента требуется объект класса, который реализует функциональный интерфейс Consumer. Вы можете реализовать Consumer локально тремя способами:
С анонимным классом:
houseAddress.forEach(new Consumer<String>() {
@Override
public void accept(String s) {
System.out.println(s);
}
});
lambda выражение:
houseAddress.forEach(s -> System.out.println(s));
или с помощью справки метода:
houseAddress.forEach(System.out::print);
Этот способ печати работает для всех реализаций интерфейса Iterable.
Все они дают вам способ определения того, как будут печататься элементы, тогда как toString() применяет список печати в одном формате.
Я не уверен, понял ли я понятие адресов (я здесь принимаю houseAddress), но если вы ищете способ распечатать ArrayList, вот вы:
System.out.println(houseAddress.toString().replaceAll("\\[\\]", ""));
Вы можете использовать Итератор. Это самая простая и наименее спорная вещь. Скажем houseAddress
имеет значения типа данных String
Iterator<String> iterator = houseAddress.iterator();
while (iterator.hasNext()) {
out.println(iterator.next());
}
Примечание. Вы можете даже использовать расширенный цикл для этого, как упомянуто мной в другом ответе
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()));
}
Это помогло мне:
System.out.println(Arrays.toString(codeLangArray.toArray()));
Вы даже можете использовать расширенный цикл for или итератор, например:
for (String name : houseAddress) {
System.out.println(name);
}
Вы можете изменить его на любой тип данных houseAddress
и избежать ненужных преобразований.
если вы сделаете @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; public Address(int i) { addr = i; public Address (int i) {addr = i; }
@Override public String toString()
{
Integer iAddr = new Integer (addr);
return iAddr.toString();
}
}
Убедитесь, что у вас есть getter в классе адресов House, а затем используйте:
for(int i = 0; i < houseAddress.size(); i++) {
System.out.print(houseAddress.get(i)**.getAddress()**);
}
for(int i = 0; i < houseAddress.size(); i++) {
System.out.print(houseAddress.get(i)**.getAddress()**);
}
только это из всех вышеперечисленных ответов работает
Вы можете использовать формат печати, если вы просто хотите напечатать элемент на консоли.
for(int i = 0; i < houseAddress.size(); i++) {
System.out.printf("%s", houseAddress.get(i));
}
Предполагая, что 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]
Это простой код добавления значения в 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);
}
}
}