Home > other >  Java converting object array to string array
Java converting object array to string array

Time:01-10

So i've been trying to solve this issue for hours but cant seem to find an answer which would work.

i have an object array which stores flight information and i had to remove flights which had Valstybe: "Maldyvai" so i made a new object array without them, but when i try to print it i get a memory location.

How do i convert the object array to string array? even though i have a tostring method in my java class

package com.company;

import java.util.*;
import com.company.Isvestine.OroUostasKeleivis;

public class Main {

    public static void main(String[] args) {
    // write your code here

        OroUostasKeleivis Keleiviai1 = new OroUostasKeleivis("Skrydis","Washington","JAV","Tomas","tomaitis","Washington",5465);
        OroUostasKeleivis Keleiviai2 = new OroUostasKeleivis("Skrydis","Washington","Maldyvai","Tomas","tomaitis","Maldyvai",5466);
        OroUostasKeleivis Keleiviai3 = new OroUostasKeleivis("Skrydis","Washington","JAV","Tomas","tomaitis","Washington",5467);
        OroUostasKeleivis Keleiviai4 = new OroUostasKeleivis("Skrydis","Washington","Maldyvai","Tomas","tomaitis","Maldyvai",5468);
        OroUostasKeleivis Keleiviai5 = new OroUostasKeleivis("Skrydis","Washington","JAV","Tomas","tomaitis","Washington",5469);
        OroUostasKeleivis Keleiviai6 = new OroUostasKeleivis("Skrydis","Washington","Maldyvai","Tomas","tomaitis","Maldyvai",5470);
        OroUostasKeleivis Keleiviai7 = new OroUostasKeleivis("Skrydis","Washington","JAV","Tomas","tomaitis","Washington",5475);
        OroUostasKeleivis Keleiviai8 = new OroUostasKeleivis("Skrydis","Washington","Maldyvai","Tomas","tomaitis","Maldyvai",5476);
        OroUostasKeleivis Keleiviai9 = new OroUostasKeleivis("Skrydis","Washington","JAV","Tomas","tomaitis","Washington",5477);
        OroUostasKeleivis Keleiviai10 = new OroUostasKeleivis("Skrydis","Washington","JAV","Tomas","tomaitis","Washington",5488);

        OroUostasKeleivis[] keleiviai = new OroUostasKeleivis[10];

        keleiviai[0] = Keleiviai1;
        keleiviai[1] = Keleiviai2;
        keleiviai[2] = Keleiviai3;
        keleiviai[3] = Keleiviai4;
        keleiviai[4] = Keleiviai5;
        keleiviai[5] = Keleiviai6;
        keleiviai[6] = Keleiviai7;
        keleiviai[7] = Keleiviai8;
        keleiviai[8] = Keleiviai9;
        keleiviai[9] = Keleiviai10;

        for (OroUostasKeleivis keleiveliai:keleiviai) {
            System.out.println(keleiveliai);
        }

        System.out.println("test debug");
        OroUostasKeleivis[] keleiviaibemaldyvu = new OroUostasKeleivis[10];

        for (int i = 0; i < 10; i  ) {

        }
        System.out.println(IsstrintiMaldyvus(keleiviai));
        String convertedStringObject = IsstrintiMaldyvus(keleiviai) .toString();
        System.out.println(convertedStringObject );
    }

    static Object[] IsstrintiMaldyvus(OroUostasKeleivis[] keleiviai){

        OroUostasKeleivis[] keleiviaiBeMaldyvu = new OroUostasKeleivis[10];
        int pozicija = 0;

        for ( OroUostasKeleivis keleiveliai: keleiviai) {
            if (keleiveliai.getValstybe() != "Maldyvai"){
                keleiviaiBeMaldyvu[pozicija] = keleiveliai;
                pozicija  ;
            }
        }
        return keleiviaiBeMaldyvu;

    }
}

CodePudding user response:

but when i try to print it i get a memory location

Yes, you will NOT have result as you expected, especially calling toString() with any array. See documentation of java.lang.Object.toString() for more details.

So how can we solve problem?

first, override toString() method in OroUostasKeleivis like this:

class OroUostasKeleivis {
    @Override
    public String toString() {
        // your implementation here
        return null; // TODO: change here
    }
}

Second, you may do either way:

  1. If you're interested in just print out, you can do that with System.out.println(keleiveliai) in for-each loop like you do.
  2. If you're interested in converting OroUostasKeleivis[] to String[], you can:
// this requires Java 8 or later
String[] converted = Arrays.asList(keleiviai)
    .stream()
    .map(OroUostasKeleivis::toString)
    .toArray(String[]::new);

// then use `converted`

CodePudding user response:

Use System.out.println(Arrays.toString(IsstrintiMaldyvus(keleiviai)))

https://www.geeksforgeeks.org/arrays-tostring-in-java-with-examples/

It will print the array contents similar to how ArrayList would get printed if it had the same content.

Think of it as: [ obj1.toString(), obj2.toString(), ... ]

CodePudding user response:

Using java.util.Arrays#stream(T[]) filter and convert object array to string array and use java.util.Arrays#toString(java.lang.Object[]) convert array to readable string.

 final String[] oroUostasKeleivis = Arrays.stream(keleiviai)
                .filter(
                        k -> k.getValStybe() != "Maldyvai"

                )
                //                or other convert code
                .map(OroUostasKeleivis::toString)
                .toArray(String[]::new);

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

  •  Tags:  
  • Related