2017-06-14 64 views
0

串的另一列表来搜索对象的名单上有对象的列表如下─一样如何在Java中使用

Trace trace1=new Trace(1,"2345","test1","BLORE"); 
Trace trace2=new Trace(2,"2341","test2","BLORE"); 
Trace trace3=new Trace(3,"6574","test3","BLORE"); 
Trace trace4=new Trace(4,"9878","test4","BLORE"); 
Trace trace5=new Trace(5,"0902","test5","BLORE"); 
Trace trace6=new Trace(6,"2121","test6","BLORE"); 
Trace trace7=new Trace(7,"3232","test7","BLORE"); 
Trace trace8=new Trace(8,"7878","test8","BLORE"); 
List<Trace> list=new ArrayList<Trace>(); 

在这里,我想搜索以下Strings-

列表
List<String> trace_list=new ArrayList<String>(); 
trace_list.add("2345"); 
trace_list.add("6574"); 
trace_list.add("0902"); 
trace_list.add("3232"); 

如何我可以这样做,请发表评论。

+0

什么是跟踪对象 – user7294900

+0

其纯粹的pojo分类s带有一些参数,如id,Trace_number,名称,城市和getter&setter和arg-construction。 – user3864129

+1

您应该将它们保留在地图中。 – shmosel

回答

0

您可以使用HashMap来实现上述场景,

Trace trace1=new Trace(1,"2345","test1","BLORE"); 
Trace trace2=new Trace(2,"2341","test2","BLORE"); 
Trace trace3=new Trace(3,"6574","test3","BLORE"); 
Trace trace4=new Trace(4,"9878","test4","BLORE"); 
Trace trace5=new Trace(5,"0902","test5","BLORE"); 
Trace trace6=new Trace(6,"2121","test6","BLORE"); 
Trace trace7=new Trace(7,"3232","test7","BLORE"); 
Trace trace8=new Trace(8,"7878","test8","BLORE"); 

HashMap<String,Trace> traceMap = new HashMap<String,Trace>(); 

traceMap.put("2345",trace1); 
traceMap.put("2341",trace2); 
traceMap.put("6574",trace3); 
traceMap.put("9878",trace4); 
traceMap.put("0902",trace5); 
traceMap.put("2121",trace6); 
traceMap.put("3232",trace7); 
traceMap.put("7878",trace8); 

将所有瓦莱斯到地图后,你可以通过使用foreach循环或使用迭代器检索。

for(String key:traceMap.keyset()){ 
     Trace traceObject = traceMap.get(key); 
} 

使用迭代器,

Iterator it = traceMap.keySet().iterator(); 
    while (it.hasNext()) { 
     String key = it.next(); 
     Trace value = traceMap.get(key); 
} 
3

嘿,如果你使用的是Java 8为什么不使用像流:

public static void main(final String[] args) { 
    Trace trace1 = new Trace(1, "2345", "test1", "BLORE"); 
    Trace trace2 = new Trace(2, "2341", "test2", "BLORE"); 
    Trace trace3 = new Trace(3, "6574", "test3", "BLORE"); 
    Trace trace4 = new Trace(4, "9878", "test4", "BLORE"); 
    Trace trace5 = new Trace(5, "0902", "test5", "BLORE"); 
    Trace trace6 = new Trace(6, "2121", "test6", "BLORE"); 
    Trace trace7 = new Trace(7, "3232", "test7", "BLORE"); 
    Trace trace8 = new Trace(8, "7878", "test8", "BLORE"); 
    List<Trace> list = new ArrayList<Trace>(); 
    list.add(trace1); 
    list.add(trace2); 
    list.add(trace3); 
    list.add(trace4); 
    list.add(trace5); 
    list.add(trace6); 
    list.add(trace7); 
    list.add(trace8); 

    List<String> trace_list = new ArrayList<String>(); 
    trace_list.add("2345"); 
    trace_list.add("6574"); 
    trace_list.add("0902"); 
    trace_list.add("3232"); 

    List<Trace> newTraceList = list.stream().filter(t -> !trace_list.contains(t.getTrace_number())).collect(Collectors.toList()); 
    System.out.println(newTraceList.toString()); 
} 
0

的使用流的另一种方式:

HashMap<String,Trace> traceMap = new HashMap<String,Trace>(); 

    traceMap.put("2345", trace1); 
    traceMap.put("2341", trace2); 
    traceMap.put("6574", trace3); 
    traceMap.put("9878", trace4); 
    traceMap.put("0902", trace5); 
    traceMap.put("2121", trace6); 
    traceMap.put("3232", trace7); 
    traceMap.put("7878", trace8); 

    Optional<Trace> result = traceMap.entrySet().stream(). 
          filter(map -> "0902".equals(map.getValue())). 
          map(map -> map.getValue()).findFirst();