如何在多个ArrayLists中对值进行排序?

时间:2015-04-28 19:14:39

标签: java sorting arraylist

我有一个Arraylist字母,其中包含字母public void registerReceiver() { if (BuildConfig.DEBUG) Log.e(TAG, "REGISTERING RECEIVER"); IntentFilter filter = new IntentFilter(); filter.addAction(BluetoothDevice.ACTION_BOND_STATE_CHANGED); filter.addAction(BluetoothDevice.ACTION_FOUND); filter.addAction(BluetoothDevice.ACTION_ACL_DISCONNECTED); mainActivity.registerReceiver(receiver, filter); } private final BroadcastReceiver receiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (BuildConfig.DEBUG) Log.e(TAG, "INTENT RECEIVED: " + String.valueOf(action)); if (BluetoothDevice.ACTION_BOND_STATE_CHANGED.equals(action)) { BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); // … some stuff … } else if (BluetoothDevice.ACTION_FOUND.equals(action)) { autoConnectDevice(); } else if (BluetoothDevice.ACTION_ACL_DISCONNECTED.equals(action)) { disconnectDevice(); } } }; public void unregisterReceiver() { if (BuildConfig.DEBUG) Log.e(TAG, "UNREGISTERING RECEIVER"); mainActivity.unregisterReceiver(receiver); } f r t,还有d个更多的Arraylists,其中一个存储{{1}一个字母和另一个存储two的一封信。 但是按字母顺序(row poistion)对Arraylist字母进行排序后,我如何相应地对每个字母的行和col值进行排序?例如,如果字母col position包含Collections.sort(letters)d,那么在排序row = 4之后,它将位于第一位并获取col ==3和``col值d。如果字母获得rowf值,我该怎么做?

假设:

row

段:

col

2 个答案:

答案 0 :(得分:5)

答案不是对每个存储每个字符的一个元素的单个数组进行排序。

创建您自己的类,将3个关联的数据属性保存在一起,例如Letter

执行以下操作之一:

  • 让类实现Comparable<Letter>,添加compareTo方法。然后有ArrayList LetterCollections.sort,您可以拨打Comparator<Letter>
  • 使用compare方法创建另一个实现ArrayList的类。使用Letter Collections.sortComparator,请致电private void promptSpeechInput() { Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault()); intent.putExtra(RecognizerIntent.EXTRA_PROMPT, getString(R.string.speech_prompt)); try { startActivityForResult(intent, REQ_CODE_SPEECH_INPUT); } catch (ActivityNotFoundException a) { Toast.makeText(getApplicationContext(), getString(R.string.speech_not_supported), Toast.LENGTH_SHORT).show(); } } 并传入另一个参数,该参数是letters的一个实例。

答案 1 :(得分:0)

恕我直言,这无法实现开箱即用,你可以通过两种方式实现它:

  1. 使用任何合适的排序技术(冒泡,合并,快速等),手动排序。处理所有三个togather,当您按所需顺序获得-(void) updateTurnLabel { self.playerLabel = [self.playerArray objectAtIndex:currentIndex+1]; } 时停止。

  2. 创建一个Map,key将是你的字母,value将是String(rowNum_colNum,或者使用它们之间的任何分隔符)并按键对该映射进行排序。稍后,打破该值并检索两个数字。