Java 如何使对象集合区分大小写?

Java 如何使对象集合区分大小写?,java,collections,lucene,indexing,Java,Collections,Lucene,Indexing,我有两门课,如下所示 Class ABC{ private String location; private String address; private String city; private Food category; ................. ................. // getters // setters } Class XYZ{ public Collection<ABC&g

我有两门课,如下所示

Class ABC{
    private String location;
    private String address;
    private String city;
    private Food category;
    .................
    .................

   // getters

   // setters
}


Class XYZ{

   public Collection<ABC> filterInput(String input){
       Collection<ABC> result = new HashSet<ABC>();
       if (criteria != null) {
            try {
                Analyzer analyzer = new WhitespaceAnalyzer();

                // Now search the index:
                IndexSearcher isearcher = new IndexSearcher(directory);

                // Parse a simple query that searches for "text":
                QueryParser parser = new MultiFieldQueryParser(new String[]{Index.CATEGORY.name(), Index.CITY.name(), Index.NAME.name()}, analyzer);
                Query query = parser.parse(criteria) ;
                TopDocCollector collector = new TopDocCollector(500);
                isearcher.search(query, collector );

                // Iterate through the results:
                ScoreDoc[] hits = collector.topDocs().scoreDocs;
                for (ScoreDoc hit : hits) {
                        Document document = isearcher.doc(hit.doc);
                        ABC entry = cache.get(Integer.valueOf(document.get(Index.OBJECT.name())));
                        results.add(entry);
            }
                 isearcher.close();
        } catch (Exception e) { }

}
ABC类{
私有字符串位置;
私有字符串地址;
私人城市;
私人食品类别;
.................
.................
//吸气剂
//二传手
}
XYZ类{
公共集合筛选器输入(字符串输入){
收集结果=新的HashSet();
如果(条件!=null){
试一试{
Analyzer Analyzer=新的空白分析器();
//现在搜索索引:
IndexSearcher isearcher=新的IndexSearcher(目录);
//分析搜索“文本”的简单查询:
QueryParser parser=新的多字段QueryParser(新字符串[]{Index.CATEGORY.name(),Index.CITY.name(),Index.name.name(),analyzer);
Query=parser.parse(条件);
TopDocCollector=新的TopDocCollector(500);
搜索(查询、收集器);
//反复查看结果:
ScoreDoc[]hits=collector.topDocs().scoreDocs;
对于(ScoreDoc命中率:命中率){
Document Document=isearcher.doc(hit.doc);
ABC entry=cache.get(Integer.valueOf(document.get(Index.OBJECT.name()));
结果。添加(条目);
}
isearcher.close();
}捕获(例外e){}
}
很好奇,我是不是遗漏了什么?


任何帮助/建议都将不胜感激。

让您的设置者应用大写或小写都可以。另一种可能性是实现Comparable并让equals方法使用equalsIgnoreCase。

您必须在case中实现
ABC
类的
hashcode
equals
麻木不仁的态度 比如说

int hashcode = 31*location.toUpperCase().hashcode();
对于
equals
方法,可以对字符串使用不区分大小写的equals:
s1.equalsIgnoreCase(s2)


但是你仍然可以用你想要的任何方式来保存它们

你想用集合元素做什么?你想实现什么?@AlexanderGavrilov使用集合元素,我将搜索/解析它,并对它执行一些类似的操作。我喜欢你的toUpperCase()我知道你说的不区分大小写是什么意思,关于什么时候向集合中添加一个项目?@RobertBeltran谢谢…但是我在寻找一种方法使集合不区分大小写吗?我知道CaseSinessitiveHashMap,但不确定HashSet…你说得对,实现了
hashCode
equals
方法,但我在寻找我将集合实现为不区分大小写,而不是修改类ABC.-1这根本不是一个好主意,因为他不想以不区分大小写的方式说一个对象等于另一个对象。您正在修改classI doub,这是可能的,因为不同的集合不知道任何内部工作这是一个很好的理由,因为它们将依赖于您放入其中的类的实现-->它们不会universal@nachokk他也没有说相反的话:)没错,我会取消我的否决票,但我仍然认为这不是他想要的,因此不是一个解决方案。