Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.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
Java Arraylist仅打印最后添加的元素_Java_Arraylist - Fatal编程技术网

Java Arraylist仅打印最后添加的元素

Java Arraylist仅打印最后添加的元素,java,arraylist,Java,Arraylist,我有一个函数,它为传入的用户数组生成密钥对(使用RSA算法),它似乎为每个用户正确生成密钥,并将它们添加到数组列表中。但是,当我试图打印输出时,它似乎只打印最后一个元素。似乎不知道我做错了什么 下面是生成键并返回arraylist的函数:-它将用户的字符串数组作为参数 public static ArrayList<User> generateUserKeys(String [] users){ ArrayList <User> usrs = new Arra

我有一个函数,它为传入的用户数组生成密钥对(使用RSA算法),它似乎为每个用户正确生成密钥,并将它们添加到数组列表中。但是,当我试图打印输出时,它似乎只打印最后一个元素。似乎不知道我做错了什么

下面是生成键并返回arraylist的函数:-它将用户的字符串数组作为参数

public static  ArrayList<User> generateUserKeys(String [] users){

    ArrayList <User> usrs = new ArrayList<User>();

    KeyPair k;

    for ( int i=0;i<users.length;i++)
    {

        k=generateKeyPair();

        usrs.add(new User(users[i],k.getPublic(),k.getPrivate()));
        System.out.println("User Name is :"+ usrs.get(i).getUserName());
        System.out.println("Public Key is :"+ usrs.get(i).getPublicKey());
        System.out.println("Private Key is :" + usrs.get(i).getPrivateKey());



    }   


    return usrs;

}

我在generateUserKeys方法代码中没有看到任何问题。用户类可能不正常,是否已将用户名值设置为“tannerh@tcd.ie“在用户类中


其他系统.out.println(…)行的结果是什么?应打印“用户名为:tannerh@tcd.ie“也有四次。

我试着按原样运行它,很明显,对于用户或KeyPairGenerator使用了哪些代码,我几乎没有做出任何假设。这是我的代码,我没有得到问题中描述的那种输出。你能帮我看看它是和静电还是其他什么有关吗@保尔·博丁顿——请不要把这看作是对你已经说过的话的评判。我是在测试的基础上发布这篇文章的。警告:我可能错了

源代码:

import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.util.ArrayList;
import java.util.Iterator;

class User {
    private String userName;
    private PublicKey pubKey;
    private PrivateKey privKey;

    public User(String string, PublicKey public1, PrivateKey private1) {
        userName = string;
        pubKey = public1;
        privKey = private1;
    }

    public String getUserName() {
        return userName;
    }

    public String getPublicKey() {
        return pubKey.toString();
    }

    public String getPrivateKey() {
        return privKey.toString();
    }
}

public class RSAKeyGenExample {

    public static ArrayList<User> generateUserKeys(String[] users) throws NoSuchAlgorithmException {
        ArrayList<User> usrs = new ArrayList<User>();

        KeyPair k;
        KeyPairGenerator keyGen = null;
        keyGen = KeyPairGenerator.getInstance("RSA");

        for (int i = 0; i < users.length; i++) {
            k = keyGen.generateKeyPair();

            usrs.add(new User(users[i], k.getPublic(), k.getPrivate()));
            System.out.println("User Name is :" + usrs.get(i).getUserName());
            System.out.println("Public Key is :" + usrs.get(i).getPublicKey());
            System.out.println("Private Key is :" + usrs.get(i).getPrivateKey());
        }
        return usrs;
    }

    public static void main(String[] args) throws NoSuchAlgorithmException {
        String[] users = { "alisy@tcd.ie", "yimk@tcd.ie", "bachas@tcd.ie", "tannerh@tcd.ie" };

        ArrayList<User> usrz = generateUserKeys(users);

        Iterator<User> itr = usrz.iterator();
        while (itr.hasNext()) {
            System.out.println(itr.next().getUserName());
        }
    }
}
导入java.security.KeyPair;
导入java.security.KeyPairGenerator;
导入java.security.NoSuchAlgorithmException;
导入java.security.PrivateKey;
导入java.security.PublicKey;
导入java.util.ArrayList;
导入java.util.Iterator;
类用户{
私有字符串用户名;
私钥;
私钥私钥;
公共用户(字符串字符串、公钥public1、私钥private1){
用户名=字符串;
publickey=public1;
privKey=private1;
}
公共字符串getUserName(){
返回用户名;
}
公共字符串getPublicKey(){
返回pubKey.toString();
}
公共字符串getPrivateKey(){
返回privKey.toString();
}
}
公共类RsaKeyGene示例{
公共静态ArrayList generateUserKeys(字符串[]用户)抛出NoSuchAlgorithmException{
ArrayList usrs=新的ArrayList();
密钥对k;
KeyPairGenerator keyGen=null;
keyGen=KeyPairGenerator.getInstance(“RSA”);
for(int i=0;i

我们可以看到用户数组吗?您可以发布所有输出吗?我怀疑您需要删除
user
的用户名字段中的
static
。类
user
的定义不存在。请加上。基本代码看起来不错。是的,我在用户类中将用户名字段设置为static,所以删除它修复了这个问题!谢谢大家!@PaulBoddington:)我刚刚重读了你的帖子,发现你实际上是在建议从用户类字段中删除static(甚至没有看到编码的内容):)看起来我甚至没有假设我会这么做。这就解释了为什么我没有得到与哈桑相同的输出。无需采取进一步行动。让我把代码留在这里,以便有一个更完整的代码。
tannerh@tcd.ie
tannerh@tcd.ie
tannerh@tcd.ie
tannerh@tcd.ie
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.util.ArrayList;
import java.util.Iterator;

class User {
    private String userName;
    private PublicKey pubKey;
    private PrivateKey privKey;

    public User(String string, PublicKey public1, PrivateKey private1) {
        userName = string;
        pubKey = public1;
        privKey = private1;
    }

    public String getUserName() {
        return userName;
    }

    public String getPublicKey() {
        return pubKey.toString();
    }

    public String getPrivateKey() {
        return privKey.toString();
    }
}

public class RSAKeyGenExample {

    public static ArrayList<User> generateUserKeys(String[] users) throws NoSuchAlgorithmException {
        ArrayList<User> usrs = new ArrayList<User>();

        KeyPair k;
        KeyPairGenerator keyGen = null;
        keyGen = KeyPairGenerator.getInstance("RSA");

        for (int i = 0; i < users.length; i++) {
            k = keyGen.generateKeyPair();

            usrs.add(new User(users[i], k.getPublic(), k.getPrivate()));
            System.out.println("User Name is :" + usrs.get(i).getUserName());
            System.out.println("Public Key is :" + usrs.get(i).getPublicKey());
            System.out.println("Private Key is :" + usrs.get(i).getPrivateKey());
        }
        return usrs;
    }

    public static void main(String[] args) throws NoSuchAlgorithmException {
        String[] users = { "alisy@tcd.ie", "yimk@tcd.ie", "bachas@tcd.ie", "tannerh@tcd.ie" };

        ArrayList<User> usrz = generateUserKeys(users);

        Iterator<User> itr = usrz.iterator();
        while (itr.hasNext()) {
            System.out.println(itr.next().getUserName());
        }
    }
}