Java array records

14,631

Solution 1

You are mixing up things.

An ArrayList is a flexible alternative to an array and serves to store "a bunch" of data which have the same type.

The type of these data (of one entry) is up to you.

The standard way of doing this in Java is to define a class like

class MyData {
    private String userName;
    private int userID;
    private int rowID;

    public MyData(String userName, int userID, int rowID) {
        this.userName = userName;
        this.userID = userID;
        this.rowID = rowID;
    }

    public String getUserName() {
        return userName;
    }

    public int getUserID() {
        return userID;
    }

    public int getRowID() {
        return rowID;
    }
}

and then

ArrayList<MyData> users = new ArrayList<>();

while (rs.next()) {
   users.add(new MyData(rs.GetString("Name"), rs.GetInt("UserID"), rs.GetInt("RowID")));
}

Solution 2

Consider the following code snippet -

int salary;
float bonus;
char YesOrNo = 'Y';  

Here salary, bonus and YesOrNo all of these are data and int, float and char are data type. We called salary is an int type data, bonus is a float type data. Here int, float, char - these data type are of primitive type in java.

In addition to primitive type you can create your own data type in object oriented programming language like - java. Here I think you can create a class of named Record or with some other more meaningful name -

public class Record {
    private String userName;
    private int userId; 
    private int rowId;

    public Record(String userName, int userId, int rowId){
      this.userName = userName;
      this.userId = userId;
      this.rowId
    }

    //getter and setter methods  if required
}  

After that when you create a instance/object of Record -

Record aRecord = new Record("user001", 1, 1);

Then in OOP we called the newly created class - Record as a user defined data type. Now we can called aRecord as a Record type data.

Then you can use ArrayList to store the Record type data -

List<Record> recordList = new ArrayList<Recored>();
Share:
14,631
Mr.Pengu
Author by

Mr.Pengu

Updated on June 16, 2022

Comments

  • Mr.Pengu
    Mr.Pengu almost 2 years

    I need to get an variable type that has 3 types of values, the only way I know to do that is "Records", but I know there is no such type as "Records" in Java but ArrayList, but I don't get it...

    My result should be: (Don't know how it would look in Java, so I'm showing in different style)

    TData = Record
         Username : String;
         UserID : Int ;
         RowID : Int;
       end;
    users : array[1..10] of TData;
    
    for(int i = 1; i < rowCount; i++){
       TData.Username[i] = rs.GetString("Name");
       TData.UserID[i] = rs.GetInt("UserID");
       TData.RowID[i] = row;
    }
    

    Any suggestions on how to make something like this? Is ArrayList that I really need?

    Thanks for the help, at the end i combined and got this result, works perfectly:

    class MyData {
            private String userName;
            private int userID;
            private int RowID;
    
    
            public MyData(String userName, int userID, int RowID) {
                this.userName = userName;
                this.userID = userID;
                this.RowID = RowID;
            }
    
            public String getUserName() {
                return userName;
            }
    
            public int getUserID() {
                return userID;
            }
            public int getRowID() {
                return RowID;
            }
        }
    
        public void AList(){
            ArrayList<MyData> users = new ArrayList<>();
            try{
                conn = DBConnection.DBConnector();
                pst = conn.prepareStatement("SELECT * FROM TableUserData");
                rs = pst.executeQuery();
                row = 0;
                while (rs.next()) {
                    users.add(new MyData(rs.getString("User_name"), rs.getInt("ID"), row));
                    row++;
                    }
                for (MyData tmp : users) {
                    JOptionPane.showMessageDialog(null, "Users: " + tmp.getUserName() + " row: " + rtmp.getRowID());
    
                }
    
            }catch(Exception e){
                JOptionPane.showMessageDialog(null, "Arraylist error: " + e);
            }
    
        }