从数组的索引中删除元素

问题描述 投票:0回答:1

我有一个问题,我必须删除数组中单词的同义词。例如;

  merciful | gracious, kindly, forgiving 
  powerful | mighty, vigorous, forceful

在这种情况下,仁慈和强大是这两个词及其同义词。 我正在尝试删除给定单词的给定同义词。

例如,我必须在我的主类中实现这个定义,

SynonymHandler.removeSynonym(synonymData, "merciful", "gracious");

SynonymHandler 是包含remove 方法的类。

这就是我编写删除方法代码的方式。 getSynonymLine 已经给出 问题是,我只需要编写删除方法的代码,但它不起作用。 我要求在删除方法中执行此操作:

  1. 确定给定单词对应的同义词行的索引。
  2. 获取数组中同义词行中的同义词。
  3. 确定要删除的同义词的索引。
  4. 在旧同义词行的索引处创建一个新同义词行。
public class SynonymHandler {
    public static String getSynonymLine(String[] synonymData, String word) {
        int index = synonymLineIndex(synonymData, word);

        return synonymData[index];
    }

    // removeSynonym accepts synonym data, and removes a given synonym for a given word.

    public static void removeSynonym(String[] synonymData, String word, String synonym) {
        int index = synonymLineIndex(synonymData, word);
        String[] removedSynData = new String[synonymData.length];
        for (int i = 0, int m = 0; i < synonymData.length; i++)
            if (synonymData[index].contains(word))
                removedSynData[m++] = synonymData[i];
    }
}
java jquery arrays element
1个回答
0
投票

这个问题的代码可以进行大量优化,但假设我们想要一个更容易理解的答案,这里有一些java代码用它的同义词替换单词,没有验证输入,所以如果使用空值将会失败:

public class SynonymHandler {
  public static void main(String[] args) {
    String[] synonymData = { "merciful", "gracious", "kindly", "forgiving" };
    System.out.println("# original");
    for (String element : synonymData) {
      System.out.println(element);
    }
    String[] modified = removeSynonym(synonymData, "merciful", "gracious");
    System.out.println("# modified");
    for (String element : modified) {
      System.out.println(element);
    }
  }

  private static String[] removeSynonym(String[] synonymData, String word, String synonym) {
    // result will have the same length as source:
    String[] result = new String[synonymData.length];
    // loop through the synonymData
    for (int index = 0; index < synonymData.length; index++) {
      // if word = synonymData[index] use synomyn, else use the original value
      result[index] = word.equals(synonymData[index]) ? synonym : synonymData[index];
    }
    return result;
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.