gpt4 book ai didi

java - 分离算法中的唯一值

转载 作者:行者123 更新时间:2023-12-01 23:07:32 24 4
gpt4 key购买 nike

我将一系列 90,000 多个字符串分解为一个离散的列表,其中包含单独的、不重复的单词对,这些单词对包含在字符串中,并具有与每个字符串关联的 rxcui id 值。我开发了一种方法试图实现这一目标,但它产生了很多冗余。数据分析显示,在我清理并格式化字符串内容后,90,000 多个源字符串中约有 12,000 个唯一单词。

如何更改下面的代码,以避免在目标 2D ArrayList 中创建冗余行(如代码下方所示)?

    public static ArrayList<ArrayList<String>> getAllWords(String[] tempsArray){//int count = tempsArray.length;
int fieldslenlessthan2 = 0;//ArrayList<String> outputarr = new ArrayList<String>();
ArrayList<ArrayList<String>> twoDimArrayList= new ArrayList<ArrayList<String>>();
int idx = 0;
for (String s : tempsArray) {
String[] fields = s.split("\t");//System.out.println(" --- fields.length is: "+fields.length);
if(fields.length>1){
ArrayList<String> row = new ArrayList<String>();
System.out.println("fields[0] is: "+fields[0]);
String cleanedTerms = cleanTerms(fields[1]);
String[] words = cleanedTerms.split(" ");
for(int j=0;j<words.length;j++){
String word=words[j].trim();
word = word.toLowerCase();
if(isValidWord(word)){//outputarr.add(word);
System.out.println("words["+j+"] is: "+word);
row.add(word_id);//WORD_ID NEEDS TO BE CREATED BY SOME METHOD.
row.add(fields[0]);
row.add(word);
twoDimArrayList.add(row);
idx += 1;
}
}
}else{fieldslenlessthan2 += 1;}
}
System.out.println("........... fieldslenlessthan2 is: "+fieldslenlessthan2);
return twoDimArrayList;
}

上述方法的输出当前如下所示,其中某些名称值有许多 rxcui 值,某些 rxcui 有许多名称值:

如何更改上面的代码,以便输出是名称/rxcui 值的唯一对的列表,汇总当前输出中的所有相关数据,同时仅删除冗余?

最佳答案

如果您只需要所有单词的集合,请使用HashSet 集合主要用于包含逻辑。如果您需要将值与字符串关联,请使用 HashMap

public HashSet<String> getUniqueWords(String[] stringArray) {
HashSet<String> uniqueWords = new HashSet<String>();
for (String str : stringArray) {
uniqueWords.add(str);
}
return uniqueWords;
}

这将为您提供数组中所有唯一字符串的集合。如果您需要 ID,请使用 HashMap

String[] strList; // your String array
int idCounter = 0;
HashMap<String, Integer> stringIDMap = new HashMap<String, Integer>();

for (String str : strList) {
if (!stringIDMap.contains(str)) {
stringIDMap.put(str, new Integer(idCounter));
idCounter++;
}
}

这将为您提供一个具有唯一字符串键和唯一整数值​​的 HashMap。要获取字符串的 id,请执行以下操作: stringIDMap.get("myString");//返回与字符串“myString”关联的整数 ID

更新基于OP的问题更新。我建议创建一个保存 String 值和 rxcui 的对象。然后,您可以使用与上面提供的类似的实现将它们放入 SetHashMap 中。

public MyObject(String str, int rxcui); // The constructor for your new object
MyObject mo1 = new MyObject("hello", 5);

要么

mySet.add(myObject);

可以工作或者

myMap.put(mo1.getStr, mo1.getRxcui); 

关于java - 分离算法中的唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22543701/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com