たとえば、複数の従業員オブジェクトを保存するようなリストがあります。次に、従業員オブジェクトの名前に応じて、このリストでファジークエリを実行したいと思います。良い解決策はありますか?
たとえば、入力したクエリ条件が「Wang」の場合、従業員のみを含むリストリストを返す必要があります。
リスト= new ArrayList(); Employee Employee1 = new Employee(); Employee1.setName( "WangQiang"); Employee1.Setage(30); list.add(Employee1); Employee Employee2 = new Employee(); employee2.setName( "lisi"); list.add(employee "); employee2.setage(25);
方法1:
パブリックリスト検索(文字列名、リストリスト){list results = new ArrayList();パターンパターン= pattern.compile(name); for(int i = 0; i <list.size(); i ++){matcher matcher = pattern.matcher(((従業員)list.get(i))。getname()); if(matcher.matches()){results.add(list.get(i)); }} return results;}上記の1つはケースに敏感です。不敏感な場合が必要な場合は、次のことを変更します。
パターンパターン= pattern.compile(name、pattern.case_insensitive);
上記は正確なクエリです。ファジーマッチを希望する場合、matcher.find()はファジーマッチを実行できます。
パブリックリスト検索(文字列名、リストリスト){list results = new ArrayList();パターンパターン= pattern.compile(name); for(int i = 0; i <list.size(); i ++){matcher matcher = pattern.matcher(((従業員)list.get(i))。getname()); if(matcher.find()){results.add(list.get(i)); }} return results;}方法2:
public class listlike {//従業員クラスのパブリッククラスの従業員{private string name; private int age; public int getage(){return age;} public void setage(int age){this.age = age;} public string getname(){return name;} public void setName(} public void setName(string name){this.name = name;} public list add fipld list(//new rist();名前、int age){従業員従業員1 = new Employee(); Employee1.setName(name); Employee1.Setage(age); list.add(Employee1); return list;} //すべての従業員を表示しますpublic void showlist(){for(int i = 0; i <list.size(); i ++){system.out.println(((employee).get(i)))。 likename){for(int i = 0; i <list.size(); i ++){if((((employee))(list.get(i)))。getname() listlike(); ll.addlist( "wuxiao"、13); ll.addlist( "wangwang"、11); ll.addlist( "wanghua"、12); ll .AddList( "Xiaowang"、13); ll.Addlist( "Xiaoxiao"、13); ll.likestring( "wang"); ll.showlist();}}}上記は、編集者が提起したJavaリストのファジークエリの実装方法のすべてのコンテンツです。誰もがwulin.comをもっとサポートすることを願っています〜