【问题标题】:Setting and Getting String Values from an ArrayList<Object>从 ArrayList<Object> 设置和获取字符串值
【发布时间】:2014-10-09 11:59:22
【问题描述】:

为对象动词创建了 get 和 set 方法。想要创建 6 个动词对象,将它们放入一个数组列表中。然后用每个对象的毛利字符串填充微调器。

public class Verb {
String maori;
String english;

public void setEnglish(String myText){
    english = myText;
}
public String getEnglish(){
    return english;
}
public void setMaori(String myText){
    maori = myText;
}
public String getMaori(){
    return maori;
}
}

来自 MainActivity。

Oncreate()

Verb patu = new Verb();
patu.setMaori=("patu");
patu.setEnglish="hit");
verbArrayList.add(patu);

稍后如果我想检索该值

String retrivedMaori = veryArrayList.get(patu.getMaori());

好吧,最终动词类将有更多的字段。例如

    haere = new Verb();
    haere.setMaori("haere");
    haere.setiTAM("went");
    haere.setKua(("gone"));
    haere.setKeite("going");
    haere.setEana("going");
    haere.setKa("go");
    haere.setMe("go");
    verbArrayList.add(haere);

HashMap 仍然是存储这个动词对象的最佳方法吗?它将有多个变量,我只想用毛利语版本填充微调器。

【问题讨论】:

  • veryArrayList.get(index).getMaori() 是使用List 的正确方法。也许你应该尝试使用HashMap
  • 你的目标是什么?您是否希望能够使用英语检索毛利语动词,反之亦然?如果是这样,您可以在此处使用 2 HashMap&lt;String, Verb&gt; 而不是 List。
  • 如果变量多于两个,Hashmap 仍然是最好的方法吗?到目前为止有 8 个不同的字符串变量

标签: java


【解决方案1】:

隔离这个:

String retrievedMaori = veryArrayList.get(patu.getMaori());

除了不正确,如果你已经有patu,那么你甚至不需要这个列表:

String retrievedMaori = patu.getMaori();

但我怀疑那时您是否会拥有Verb patu 对象。您将只拥有元素的索引。如果是这样,您可以这样做来检索Verb 对象,然后是毛利语:

Verb v = veryArrayList.get(index);
String retrievedMaori = v.getMaori();

如果您以后希望能够从任何语言中检索动词,您可能需要地图来代替:

HashMap<String,Verb> maoriToVerb = new HashMap<>();
HashMap<String,Verb> englishToVerb = new HashMap<>();

// create a verb
Verb patu = new Verb();
patu.setMaori("patu");
patu.setEnglish("hit");

// add it to both dictionaries
maoriToVerb.put(patu.getMaori(), patu);
englishToVerb.put(patu.getEnglish(), patu);

// how to get english from maori
String knownMaori = "patu";
Verb retrievedVerbFromMaori = maoriToVerb.get(knownMaori);
String retrievedEnglish = retrievedVerbFromMaori.getEnglish();

// how to get maori from english
String knownEnglish = "hit";
Verb retrievedVerbFromEnglish = englishToVerb.get(knownEnglish);
String retrievedMaori = retrievedVerbFromEnglish.getMaori();

要填充您的微调器,您可以通过以下方式获取毛利地图的键:

Set<String> maoriStrings = maoriToVerb.keySet();

【讨论】:

  • 我仍然想知道如果我有更多的值而不是这两个值,这是否是最好的方法?我需要合并单词 hit 的所有其他时态版本。例如“击中。
  • 只要所有的值不同(没有两个不同的英文单词有相同的毛利语翻译),这都没有问题。
【解决方案2】:

代替

patu.setMaori=("patu");
patu.setEnglish="hit");
verbArrayList.add(patu);

patu.setMaori("patu");
patu.setEnglish("hit");
verbArrayList.add(patu);

代替

String retrivedMaori = veryArrayList.get(patu.getMaori());

String retrivedMaori = veryArrayList.get(0).getMaori();

【讨论】:

    【解决方案3】:

    veryArrayList.get(patu.getMaori()) 错误。

    veryArrayList.get(index) 本身就是 'patu' 的一个实例。

    veryArrayList.get(index).getMaori(); 是正确的。

    【讨论】:

    • 谢谢你,是的,代码有点喷,祈祷成为主人哈哈
    猜你喜欢
    • 2017-11-29
    • 1970-01-01
    • 1970-01-01
    • 2020-07-15
    • 2012-10-25
    • 1970-01-01
    • 2012-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多