You can have single array with original data but also have different ArrayCollections underlaing on same array. Thus, you can apply any filter to instances of ArrayCollections.
As example:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="vertical"
creationComplete="init();">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
private var buffer:Array;
[Bindable]
private var listData1:ArrayCollection;
[Bindable]
private var listData2:ArrayCollection;
private function init():void
{
buffer = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
listData1 = new ArrayCollection();
listData1.source = buffer;
listData2 = new ArrayCollection();
listData2.source = buffer;
listData1.filterFunction = filter1
listData2.filterFunction = filter2;
listData1.refresh();
listData2.refresh();
}
private function filter1(item:Object):Boolean
{
var i:Number = Number(item);
if (i >= 5)
{
return true;
}
return false;
}
private function filter2(item:Object):Boolean
{
var i:Number = Number(item);
if (i <= 5)
{
return true;
}
return false;
}
]]>
</mx:Script>
<mx:HBox>
<mx:List id="list1"
dataProvider="{listData1}"/>
<mx:List id="list2"
dataProvider="{listData2}"/>
</mx:HBox>
</mx:Application>