繁体   English   中英

Java将数组与ArrayList进行比较

[英]Java compare array to ArrayList

我真的被困在这里。 我只是想知道是否还有另一种比较数组和HashMap键的方法? 请查看我对我的代码的评论

          ArrayList<String> datalist = new ArrayList();
                datalist.add("test,test2,test3,test4");
                datalist.add("test2,test,test3,test4");
                datalist.add("test3,test4,test,test2");

         Map<String,String> hashdata = new HashMap();
                        hashdata= setHashMap(datalist);
     Set data_key = hashdata.keySet(); // so i get now the all Key of Hashmap

                String line;
                String[] data;
                LineIterator it = FileUtils.lineIterator(file,"UTF-8");

                while(it.hasNext()){
                    line = it.nextLine();

                    data = StringUtils.split(line,(","));

                    //I have this code compare line splitted by ',' compare to key 
                    if(!(data_key.contains(data[0]))){
System.out.println("Invalid");


                    //But what I want is to compare KeySet to line splitted by ','
                    if(//statement here){

                    }

                }

            private static Map<String,String> setHashMap(ArrayList<String> inputlist){
                   String[] data;
                   Map<String,String> hashmap = new HashMap<String,String>();
                   for(int i=0; i<inputlist.size(); i++){
                       data = inputlist.get(i).split(",");
                       hashmap.put(data[0], data[1]);
                   }
                   return hashmap;
                }

档案资料:

test1,test2,test3
test2,test3,test1
test3,test2,test1

预先谢谢你们!

我将使用StringUtils.join加入您的列表,以创建一个单个字符串,并将其与每一行进行比较,而不是将文件拆分为数组,并针对列表对两个数组进行迭代。

您可以使用如下的Java代码:

ArrayList<String> datalist = new ArrayList<String>();
datalist.add("test");
datalist.add("test2");
datalist.add("test3");

String line;
String data = StringUtils.join(datalist, ',');

LineIterator it = FileUtils.lineIterator(file,"UTF-8");

while (it.hasNext()) {
    line = it.nextLine();

    if (data.equals(line)) {
        System.out.println("Valid");
    }
}

get()方法将允许您从ArrayList中选择特定的索引。 请参阅Javadoc

以下是将定义的ArrayList与输入数组进行比较的几种方法。 如果其中之一满足您的需求,请告诉我们哪一个。 ;)

public class temp {
    ArrayList<String> datalist = new ArrayList();
    datalist.add("test");
    datalist.add("test2");
    datalist.add("test3");

    String line;
    String[] data;
    LineIterator it = FileUtils.lineIterator(file,"UTF-8");

    while(it.hasNext()){
        line = it.nextLine();

        data = StringUtils.split(line,(","));

        //I have this code compare line to elements of arraylist
        if(datalist.contains(data[0]){
            System.out.println("Valid A");
        }

        // Test specific element of array list against a specific index in the file
        if(data[0] == datalist.get(0)){
            System.out.println("Valid B");
        }

        //test specific element in array list against each element in line
        for(int i = 0; i < data.length; i++)
            if(data[i] == datalist.get(0)){
                System.out.println("Valid C for index " + i);
            }

        //test if array list contains any element in line
        for (String element : datalist) {
            for (int i = 0; i < data.length; i++)
                if (datalist.contains(data[0])){
                    System.out.println("Valid D for index " + i);
                }
        }

    }

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM