![](/img/trans.png)
[英]how to sort arrayList based on another arrayList in android
[英]How would I sort an ArrayList based on how another ArrayList acts? (java)
这最终是我需要做的:
我有一个名为originalList的ArrayList
,看起来像[pans, pots, sit, it's, naps]
另一个名为modifiedList的ArrayList
,它接受originalList并删除标点符号和大写,然后对列表进行排序。 所以它看起来像[anps, anps, ist, ist, opst]
modifiedList的目的是告诉我哪些词是彼此的字谜。 字谜是由相同字母组成的单词。 问题是我需要对originalList进行排序以匹配modifiedList,以便我可以输出相互字谜的单词。 originalList需要成为[pans, naps, sit, it's, pots]
。 建议?
不要使用其他列表。 排序使用比较说,“标准化”你原来的列表中的两个词来比较,然后比较它们的标准值(由正火,我的意思是转化naps
到anps
)。
然后,您将在列表中将您的字谜彼此相邻。
public static void main(String args[]){
ArrayList<String> alOriginal = new ArrayList<String>();
alOriginal.add("pans");
alOriginal.add("pots");
alOriginal.add("sit");
alOriginal.add("it's");
alOriginal.add("naps");
ArrayList<String> alAnagram = getSortedAnagramStrings(alOriginal);
System.out.println(alOriginal);
System.out.println(alAnagram);
}
public static java.util.ArrayList<String> getSortedAnagramStrings(ArrayList<String> original){
ArrayList<String> alAnagramStrings = new ArrayList<String>();
for (String currentString : original) {
// Remove punctuation
char[] anagramChars = currentString.replace("'", "").toCharArray();
// Sort characters
Arrays.sort(anagramChars);
// Prepare string
String anagramString = new String(anagramChars);
// Add to array list
alAnagramStrings.add(anagramString);
}
// Simple sort logic
for (int index = 0; index < alAnagramStrings.size(); index ++){
for (int index1 = index + 1; index1 < alAnagramStrings.size(); index1 ++){
// If both anagram strings are same
if(alAnagramStrings.get(index).compareTo(alAnagramStrings.get(index1)) == 0){
// Compare original strings
if (original.get(index).compareTo(original.get(index1)) > 0){
String temp =original.get(index);
original.set(index, original.get(index1));
original.set(index1, temp);
}else{
String temp =original.get(index);
original.set(index1, original.get(index));
original.set(index, temp);
}
}else if(alAnagramStrings.get(index).compareTo(alAnagramStrings.get(index1)) > 0){
String temp =alAnagramStrings.get(index);
alAnagramStrings.set(index, alAnagramStrings.get(index1));
alAnagramStrings.set(index1, temp);
String temp1 =original.get(index);
original.set(index, original.get(index1));
original.set(index1, temp1);
}
}
}
return alAnagramStrings;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.