2017-10-06 4 views
-3

私はこのようなことから値を取得どのようにしてアレイとマップを組み合わせ、それと何かを組み合わせるのですか?

......二つの配列

String[] names = {“bob”, “rob”}; //There are multiple arrays for various scenarios names1, names2 and so on… 
String[] features = {“age”, “weight”}; //There are multiple array for various scenarios features1 features2 and so on… 


年齢、体重、性別、職業のためのキーと値を持つクラスではHashMapを持っている:

public ClassToGetValues (String name) {  

public String getValue(String key) { 
       return map.get(key); 
      } 

    private void buildMap(Paramenter1 paramenter1, Paramenter2, paramenter2) { 
       map.put("name", someFunction()); 
      map.put(.... 
     } 
    } 

私はこれらの配列を使用して、次を印刷するマップ:
ボブ30yrの160lbs
奪う4 0yrの170lbs

private static void printMethod(String[] names, String[] features) { 

     for (String name : names) { 
      ClassToGetValues classToGetValues = new ClassToGetValues(name); 
      for (String feature : features) { 
       System.out.print(classToGetValues.getValue(feature) + " "); 

      } 
      System.out.println(); 
     } 

    } 

は今、私はこれらのメソッドを作成して開始します

方法1

public String criteriaOne(int age, int weight) { 
     if (age > 35 && weight > 160) { 
      // "Do something"; 
     } 
     return names; 
    } 

方法2

public String criteriaTwo(int age, String gender) { 
      if (age <70 && gender == “male”) { 
       // "Do something"; 
      } 
      return names; 
     } 

のようないくつかのメソッドを作成したいですか?

+2

などのあらゆるPersonのデータをプリントアウト:私のアドバイスは、クラスを作成し、そのタイプのリストやマップを保持し、ありますJavaはオブジェクト指向プログラミング言語です。データにオブジェクトを使用する必要があり、この問題はもっと簡単になります。 –

+0

あなたはもっと機能的に考えて、ラムダを調べるべきです。これらのすべての条件は、java.util.functionパッケージのインタフェースに完全に適合します。 – duffymo

+0

言語に属する方法で解決してください。したがって、配列やマップを使用するのではなく、必要な構造体を含むクラスを作成します。 –

答えて

0

Javaでは、Personに関連するデータを格納するクラスPersonを作成すると、それらのデータを異なるデータ構造に酷く保持するのではなく、さて、javaがそのように使われることは意図されていないにもかかわらず、あなたにそれをさせるいくつかの外部の制約があるかもしれません。

public class Person { 
    private String name; 
    private int age; 
    private double weight; 

    public Person(String name, int age, double weight) { 
     this.name = name; 
     this.age = age; 
     this.weight = weight; 
    } 

    public String getName() { 
     return this.name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public int getAge() { 
     return this.age; 
    } 

    public void setAge(int age) { 
     this.age = age; 
    } 

    public double getWeight() { 
     return this.weight; 
    } 

    public void setWeight(double weight) { 
     this.weight = weight; 
    } 

    @Override 
    public String toString() { 
     String s = String.format("Person %s is %d years old and weighs %f lbs", name, String.valueOf(age), String.valueOf(double)); 
     return s; 
    } 

、あなたは、単一List<Person>を作成し、いくつかのPerson Sを追加し、

List<Person> persons = new ArrayList<Person>(); 
persons.add(new Person("Bob", 23, 160); 
persons.add(new Person("Rob", 20, 120); 
for (Person p : persons) { 
    System.out.println(p.toString()); 
} 
関連する問題