Android:在数组中查找具有“类似”值的值

时间:2013-09-13 07:59:56

标签: java arrays comparison

我对这部分有疑问

我的代码:

String[] sample = {'name=NAME', 'add=ADD', 'age=AGE', 'gender=GENDER'};

for(int a = 0; a < sample.length; a++) {
    if(Arrays.asList(sample).contains("name")) {
        Log.d(tag, "successful");
    } else {
        Log.d(tag, "failed");
    }
}

当我使用此代码时,它不会返回true,但是当我使用.contains("name=NAME")时 它返回true

是否有可能使用不太具体的字符串比较字符串值?

BTW,这些字符串值来自file.txt。

3 个答案:

答案 0 :(得分:1)

如果您使用Arrays.asList(示例),您将拥有一个包含字符串“name = NAME”的列表,因此它不包含字符串“name”

你应该遍历数组(不需要创建列表)

boolean found = false;
for (String s: sample) 
    if (s.contains("name")) 
        found=true;

答案 1 :(得分:0)

.contains方法将检查对象是否存在于ArrayList中。

在您的案例中,对象是:“name = NAME”,“add = ADD”,“age = AGE”,“gender = GENDER”,属于String类型。所以很明显它会返回false。

对于您来说,更好的做法是创建一个名为Person的类,其中包含名称,添加,年龄和性别等属性。然后将其对象存储在ArrayList中,您可以检查对象是否在不使用.contains()函数的ArrayList中。如下所示:

class Person{
String name;
String add;
int age;
String gen;
    // All getters and setters methods will be here.
}

public static void main(String[] args){
    Person p = new Person();

    //Here you can set the properties of person using p.setXXX() methods
    //Now suppose you have ArrayList of Person object named "per" then you can check
    // whether Person exist in it or not using contains like below

    per.contains(p) //returns true if per contains object p

    //or you can check name by below code

    for(Person temp:per){
            if(temp.getName().equals(name)){ //returns true if name matchs with Persons name
                      //do something
            }
}

答案 2 :(得分:0)

根据键获取值:

1)您可以使用HashMap对象

import java.util.*;
import java.lang.*;
import java.io.*;

/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
  public static void main(String args[]) {
    // create hash map
    HashMap newmap = new HashMap();

    // populate hash map
    newmap.put("name", "abcde");
    newmap.put("age", "XX");
    newmap.put("Gender", "Male");

    // get value of key Gender
    String val=(String)newmap.get("Gender");

    // check the value
    System.out.println("Value for key 3 is: " + val);
  }    
}

2)您也可以使用Map对象

  Map<String, String> map = new HashMap<String, String>();
  map.put("name", "abcde");
  map.put("age", "XX");
  String val=(String)map.get("name"); 

3)你也可以使用二维数组的字符串

  String data = "name=Name,age=Age";
  String[] rows = data.split(",");
  String[][] matrix = new String[rows.length][]; 
  int r = 0;
  for (String row : rows) {
     matrix[r++] = row.split("\\=");
  }
  System.out.println(matrix[1][1]);