Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
传递ArrayList<;对象>;作为方法的参数,处理arrayList并返回它-Java_Java_Arraylist_Return Type - Fatal编程技术网

传递ArrayList<;对象>;作为方法的参数,处理arrayList并返回它-Java

传递ArrayList<;对象>;作为方法的参数,处理arrayList并返回它-Java,java,arraylist,return-type,Java,Arraylist,Return Type,编辑: 对于拼写错误和打字错误,我很抱歉,我不想把我的代码放在这里,所以我尝试用一个新的代码来表达我的问题 这是我正在使用的实际代码,我只是删除了其中的一些部分,因为它们与我的问题无关,我想,否则只要问我,我也会把它放在这里 以下是实际代码: public class Dados { private String sta; private String ap; private int startTime; private int endTime; pri

编辑:

对于拼写错误和打字错误,我很抱歉,我不想把我的代码放在这里,所以我尝试用一个新的代码来表达我的问题

这是我正在使用的实际代码,我只是删除了其中的一些部分,因为它们与我的问题无关,我想,否则只要问我,我也会把它放在这里

以下是实际代码:

public class Dados {

    private String sta;
    private String ap;
    private int startTime;
    private int endTime;
    private int repetitionSTA;
    private int pingPong;
    private int tt_previous;
    private int tt_next;
    private int id;

    public Dados(int id, int startTime, int endTime, String ap, String sta, int repetitionSTA, int ttprevious, int ttnext, int ppong)
    {
        this.sta = sta;
        this.ap = ap;
        this.startTime = startTime;
        this.endTime=endTime;
        this.pingPong = ppong;
        this.tt_next = ttnext;
        this.tt_previous = ttprevious;
        this.id = id;
        this.repetitionSTA = repetitionSTA;
    }

    // SET

    public void setPingPong()
    {
        this.pingPong = 1;
    }


    //GET

    public int getPingPong()
    {
        return this.pingPong;
    }

}
//从现在开始再上一节课

public class Queries extends LigarBD{

    String dbtime = null; 

    int id = 1;

    TreeMap<Integer, ArrayList> tmValores = new TreeMap<>();
    ArrayList<Dados> listaObjectos = new ArrayList<>();
    ArrayList<Dados> listaObjectos2 = new ArrayList<>();


    public ArrayList getUniqueStations(String server)
    {
        ArrayList<String> listaSTA = new ArrayList<>();

        String query = "SELECT distinct calling_station_id FROM java_logs;";

        try
        {
            super.ligar(server);
            Statement s = super.getConexao().createStatement();
            ResultSet rs = s.executeQuery(query);
            while (rs.next())
            {
                listaSTA.add(rs.getString(1));
            }
            rs.close();
            s.close();
            super.desligar(super.getConexao());

        }
        catch (Exception e)
        {
            JOptionPane.showMessageDialog(null, "Error at listing all unique stations. Reason -> "+e.getMessage());
            System.out.println("Error at listing all unique stations. Reason ->  "+e.toString());
        }

        return listaSTA;
    }


    public ArrayList getStationData(String mac, String server)
    {

        try 
        {
            super.ligar(server);
            Statement s = getConexao().createStatement();

            ResultSet rs = s.executeQuery("SELECT timestamp-acct_session_time, timestamp, called_station_id, calling_station_id "
                                        + "FROM java_logs where calling_station_id = '"+mac+"';"); // retirar STA da query *******************
            //System.out.println("Executing the Query on+"+server+" - UniqueSTA - Query number: 1?");
            int repetitionSTA=1;
            while (rs.next()) 
            {              
                Dados d = new Dados(id, rs.getInt(1), rs.getInt(2), rs.getString(3), rs.getString(4), repetitionSTA, 0, 0, 0);

                listaObjectos2.add(d);
                repetitionSTA++;
                id++;
            }

            rs.close();
            s.close();
            super.desligar(super.getConexao());
        }
        catch (Exception e) 
        {
            JOptionPane.showMessageDialog(null,"Error at Select Query. Reason -> "+e.getMessage());
        }

        return listaObjectos2;
    }

}
公共类查询扩展了LigarBD{
字符串dbtime=null;
int-id=1;
TreeMap tmValores=新的TreeMap();
ArrayList listaObjectos=新的ArrayList();
ArrayList listaObjectos2=新的ArrayList();
公共ArrayList getUniqueStations(字符串服务器)
{
ArrayList listaSTA=新的ArrayList();
String query=“从java_日志中选择不同的呼叫站_id;”;
尝试
{
超级ligar(服务器);
语句s=super.getConexao().createStatement();
结果集rs=s.executeQuery(查询);
while(rs.next())
{
添加(rs.getString(1));
}
rs.close();
s、 close();
super.desligar(super.getConexao());
}
捕获(例外e)
{
showMessageDialog(null,“列出所有唯一电台时出错。原因->”+e.getMessage());
System.out.println(“列出所有唯一电台时出错。原因->”+e.toString());
}
返回listaSTA;
}
公共阵列列表getStationData(字符串mac、字符串服务器)
{
尝试
{
超级ligar(服务器);
语句s=getConexao().createStatement();
ResultSet rs=s.executeQuery(“选择时间戳-帐户会话时间,时间戳,调用站id,调用站id”
+“来自java_日志,其中调用_station_id=”“+mac+”;”;//retirar STA da查询*******************
//System.out.println(“在+”+server+“-UniqueSTA上执行查询-查询编号:1?”);
int重复次数ta=1;
while(rs.next())
{              
Dados d=新的Dados(id,rs.getInt(1),rs.getInt(2),rs.getString(3),rs.getString(4),repetitionSTA,0,0);
listaObjectos2.添加(d);
重复TA++;
id++;
}
rs.close();
s、 close();
super.desligar(super.getConexao());
}
捕获(例外e)
{
JOptionPane.showMessageDialog(null,“选择查询时出错。原因->”+e.getMessage());
}
返回列表aObjectos2;
}
}
另一类:

public class Pingpong {

    ArrayList<Dados> dadosArray = new ArrayList<>();



    Queries q = new Queries();

    TreeMap<Integer, ArrayList> mapa = new TreeMap<>();
    ArrayList<Dados> arrayDeDados = new ArrayList<>();


    public ArrayList detectPingPongArray(int threshold_access_session_time, int threshold_transition_time, ArrayList<Dados> dadosSTA)
    {
        dadosArray=dadosSTA;
        for(int i = 1; i<arrayDeDados.size()-1; i++)
        {
            dadosArray.get(i).setPingPong();
        }
        return dadosArray;
    }


}
public-class乒乓球{
ArrayList dadosArray=新的ArrayList();
查询q=新查询();
TreeMap mapa=新的TreeMap();
ArrayList ArrayDados=新的ArrayList();
公共ArrayList DetecttpingPongarray(int-threshold\u access\u session\u time,int-threshold\u transition\u time,ArrayList数据存储)
{
达多萨雷=达多斯塔;
对于(int i=1;这是问题所在
我想说的是,您的代码中有一些不好的做法,比如忽略
ArrayList
s中的泛型,但是让我们开门见山

在我看来,您的问题在于以下方法:

public ArrayList detectPingPongArray(
        int threshold_access_session_time,
        int threshold_transition_time,
        ArrayList<Dados> dadosSTA
) {
    dadosArray=dadosSTA;
    for(int i = 1; i<arrayDeDados.size()-1; i++) {
        dadosArray.get(i).setPingPong();
    }
    return dadosArray;
}
因此,由于空列表的
size()


提示 根据要求,我还为未来添加了一些提示

  • 虽然这不一定是一种不好的做法,更多的是个人偏好,但我不会用葡萄牙语(在本例中似乎是葡萄牙语)或英语以外的任何语言来命名我的类/变量。在这种情况下,它可以让其他人更容易阅读代码

  • 公共类查询扩展了LigarBD

    我不确定对数据库执行查询的类是否应该扩展连接到数据库的类。相反,使用连接到数据库的类似乎更合适。

    代码中的一些模式很容易看出这一点,例如
    super.ligar()
    super.getConexao()
    super.desligar())
    ,您可以在与我们共享的两种方法中执行此操作。您似乎对使用
    LigarBD
    提供的接口感兴趣,而不是对其进行扩展或添加功能。您可以通过声明类型为
    LigarBD
    的实例变量并相应地使用它来更改此操作

  • public ArrayList detecttpingpongaray

    在这里,您扔掉了与
    ArrayList
    关联的一般信息。 如果您知道将返回一个
    ArrayList
    ,并且希望此方法的调用者也知道这一点,那么您应该如下声明该方法:
    public ArrayList detecttpingpongaray


    这样,调用者将期望使用
    ArrayList
    ,而不是某个内容的
    ArrayList
    (可能引入不安全的强制转换/操作)


  • 进一步分析 我也不确定这是否是故意的,但我在您的代码中发现了一些相当奇怪的东西

    ArrayList<Dados> dadosSTA = new ArrayList<>();
    ArrayList<Dados> dataForPPong = new ArrayList();
    
    ArrayList uniqueSTA = q.getUniqueStations("localserver");
    
    for(int i = 0; i<uniqueSTA.size(); i++)
    {
        dadosSTA = q.getStationData(uniqueSTA.get(i).toString(), "localserver");
        dataForPPong = p.detectPingPongArray(5, 3, dadosSTA);
    }
    
    for(int i=0; i<dataForPPong.size(); i++)
    {
        System.out.println("ID: "+dataForPPong.get(i).getId()+" STA: "+dataForPPong.get(i).getStation()
                + " PingPong: "+dataForPPong.get(i).getPingPong());
    }
    
    ArrayList-dadosSTA=new-ArrayList();
    ArrayList dataForPPong=新的ArrayList();
    ArrayList uniqueSTA=q.getUniqueStations(“localserver”);
    对于(int i=0;这是问题所在
    我想说的是,您的代码中有一些不好的做法,比如忽略
    ArrayList
    s中的泛型,但是让我们开门见山

    在我看来,您的问题在于以下方法:

    public ArrayList detectPingPongArray(
            int threshold_access_session_time,
            int threshold_transition_time,
            ArrayList<Dados> dadosSTA
    ) {
        dadosArray=dadosSTA;
        for(int i = 1; i<arrayDeDados.size()-1; i++) {
            dadosArray.get(i).setPingPong();
        }
        return dadosArray;
    }
    
    因此,由于空列表的
    size()


    提示 根据要求,我还为未来添加了一些提示

  • 虽然这不一定是一种坏习惯,但更多的是个人偏好,我不会这么做
    ArrayList<Dados> dadosSTA = new ArrayList<>();
    ArrayList<Dados> dataForPPong = new ArrayList();
    
    ArrayList uniqueSTA = q.getUniqueStations("localserver");
    
    for(int i = 0; i<uniqueSTA.size(); i++)
    {
        dadosSTA = q.getStationData(uniqueSTA.get(i).toString(), "localserver");
        dataForPPong = p.detectPingPongArray(5, 3, dadosSTA);
    }
    
    for(int i=0; i<dataForPPong.size(); i++)
    {
        System.out.println("ID: "+dataForPPong.get(i).getId()+" STA: "+dataForPPong.get(i).getStation()
                + " PingPong: "+dataForPPong.get(i).getPingPong());
    }