-3

这部分有问题

我的代码:

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

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

顺便说一句,这些字符串值来自 file.txt。

4

3 回答 3

1

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

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

boolean found = false;
for (String s: sample) 
    if (s.contains("name")) 
        found=true;
于 2013-09-13T08:08:49.417 回答
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
            }
}
于 2013-09-13T08:07:53.493 回答
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]);
于 2013-09-13T09:17:03.387 回答