Java 比较列表和数组

Java 比较列表和数组,java,Java,我需要将列表中的值与数组中的值进行比较。 我写了以下内容: public class JavaApplication3 { /** * @param args the command line arguments */ public static void main(String[] args) { // TODO code application logic hereut List<String> l = new ArrayList<String>

我需要将列表中的值与数组中的值进行比较。 我写了以下内容:

public class JavaApplication3 {

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {
    // TODO code application logic hereut
    List<String> l = new ArrayList<String>();
    l.add("test");
    l.add("b");
    String v = "";
    String s = "";
    String[] arr = {"test", "c", "b"};

    for (int i = 0; i < l.size(); i++){
        v = "";
        s = "";
        //System.out.println(l.get(i));
        for (int j = 0; j < arr.length; j++){
            if (l.get(i).equals(arr[j])){
                s = i + "";
            }else{
                s = arr[i];
            }
            v = v + s + ",";                   
        }  
        System.out.println(v);          
    }

}
公共类JavaApplication3{
/**
*@param指定命令行参数
*/
公共静态void main(字符串[]args){
//TODO代码应用程序逻辑在此
列表l=新的ArrayList();
l、 添加(“测试”);
l、 添加(“b”);
字符串v=“”;
字符串s=“”;
字符串[]arr={“test”,“c”,“b”};
对于(int i=0;i
}

我获得以下信息 0,测试,测试,, c、 c,1 但我需要这样的结果: 0,c,1,

这个怎么样:

 public static void main(String[] args) {
        // TODO code application logic hereut
        List<String> l = new ArrayList<String>();
        l.add("test");
        l.add("b");
        String v = "";
        String s = "";
        String[] arr = {"test", "c", "b"};
        int pointer = 0;
        for (int i = 0; i < l.size(); i++){
                        //System.out.println(l.get(i));
            for (; pointer < arr.length;){
                if (l.get(i).equals(arr[pointer])){
                    s = i + "";
                    v = v + s + ",";
                    pointer++;
                    break;
                }else{
                    s = arr[i];
                }
                pointer++;
                v = v + s + ",";
            }

        }
        System.out.println(v);

    }
publicstaticvoidmain(字符串[]args){
//TODO代码应用程序逻辑在此
列表l=新的ArrayList();
l、 添加(“测试”);
l、 添加(“b”);
字符串v=“”;
字符串s=“”;
字符串[]arr={“test”,“c”,“b”};
int指针=0;
对于(int i=0;i
看看你的预期结果,我猜要求是这样的:

对于数组中的每个元素,检查它是否在列表中。如果它在列表中,则打印该元素列表中的索引,否则打印元素本身。因此,算法应该做到:

array[0] = "test" -> found at index 0 -> print "0"
array[1] = "c"    -> not found        -> print "c"
array[2] = "b"    -> found at index 1 -> print "1"

外部循环应该在数组上迭代。然后,对于每个数组项,迭代列表,直到找到相同的元素。对于初稿,不要以字符串形式收集输出,而是立即打印。当算法按预期工作时,您可以创建字符串。

您有六次迭代,每次迭代都会在输出中插入一些内容


您需要三次迭代,每次迭代检查第一个列表中的成员资格。您可以使用
List.contains()
方法来实现这一点。(如果列表很长,您可能需要考虑使用<代码> SET/COMPUT>而不是<代码>列表>代码>,以便更快地检查集合成员资格。

< P>尝试将事情分解到它们的高级步骤。
For each string in the array
    find its place in the list
    if the item is in the list
        print its position
    else
        print the missing string
    print a common and space
一旦你有了它,你就可以发现
在列表中找到它的位置
可能是一个返回列表中位置的方法,如果它不在列表中,则返回-1。下面是我所做的(可能已经重命名了一些东西并使用了StringBuilder,但您可以暂时忽略它)

import java.util.ArrayList;
导入java.util.List;
公开课范例{
公共静态void main(最终字符串[]args){
最终列表listToSeach=新的ArrayList();
添加(“测试”);
添加(“b”);
最后一个字符串[]arrayElementsToFind={“test”、“c”、“b”};
最终StringBuilder输出=新StringBuilder();
for(最终字符串:arrayElementsToFind){
final int firstIndex=findFirstIndex(listToSeach,字符串);
如果(第一索引>-1){
append(firstIndex);
}否则{
append(字符串);
}
输出。追加(“,”);
}
系统输出打印项次(输出);
}
私有静态int findFirstIndex(最终列表,
最后一个字符串元素){
对于(int i=0;i
我建议:

     List<String> l = new ArrayList<String>();
     l.add("test");
     l.add("b");
     String[] arr = {"test", "c", "b"};

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

       if(l.contains(arr[i]))
         s = ""+l.indexOf(arr[i]);
       else
         s = arr[i];

       v = v + s + ",";
      }
listl=newarraylist();
l、 添加(“测试”);
l、 添加(“b”);
字符串[]arr={“test”,“c”,“b”};

对于(int i=0;i预期不是语句“;”所需的预期不兼容类型:找到布尔值:int@coco更正了我的答案。检查我是否运行了代码,它正在运行,因为你在foreach循环中放入了v=“”,它正在擦除,而不是修复。非常感谢Andreas和你们所有人。好主意:)。作为初学者的愚蠢问题。非常感谢。
     List<String> l = new ArrayList<String>();
     l.add("test");
     l.add("b");
     String[] arr = {"test", "c", "b"};

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

       if(l.contains(arr[i]))
         s = ""+l.indexOf(arr[i]);
       else
         s = arr[i];

       v = v + s + ",";
      }