class App extends React.Component {
state = {
searchText: '',
};
getColumnSearchProps = (dataIndex) => ({
filterDropdown: ({
setSelectedKeys, selectedKeys, confirm, clearFilters,
}) => (
<div style={{ padding: 8 }}>
<Input
placeholder={`Search ${dataIndex}`}
value={selectedKeys[0]}
onChange={e => setSelectedKeys(e.target.value ? [e.target.value] : [])}
onPressEnter={() => this.handleSearch(selectedKeys, confirm)}
/>
<Button
type="primary"
onClick={() => this.handleSearch(selectedKeys, confirm)}
icon="search"
>
Search
</Button>
</div>
),
// onFilter seems to only loop over root nodes
onFilter: (value, record) => record[dataIndex].toString().toLowerCase().includes(value.toLowerCase()),
render: (text) => (
<Highlighter
...
/>
),
})
render() {
const columns = [{
title: 'Name',
dataIndex: 'name',
key: 'name',
...this.getColumnSearchProps('name'),
}];
return <Table columns={columns} dataSource={data} />;
}
}
如果列的一组特定值不匹配,我需要过滤掉行。 我的masterData包含30,000条记录。 我的rowColumnData将保存2M条记录,基本上是一行,其列值存储在数组列表中,而整个表数据为List>。
如何使用流API编写可以提高性能的代码?
答案 0 :(得分:0)
在使用流时,我的性能水平不高,但是您可以通过使用parallelStream
来做到这一点,其中多线程可以处理数据,
需要知道一些有趣的事实Java 8's streams: why parallel stream is slower?
List<List<String>> result = rowColumnData
.parallelStream()
.filter(l->masterData.contains(l.get(columnIndex)))
.collect(Collectors.toList());
但是请注意
列表E get(int索引)抛出:
IndexOutOfBoundsException-如果索引超出范围(索引<0 ||索引> = size())
设置布尔包含(对象o)抛出:
NullPointerException-如果指定的元素为null,并且此集合不允许null元素(可选)