① Java中file類的LIST方法只要傳入一個過濾器對象就行了,它是不是在內部自動調用過濾器的方法
源碼中是直接調用你重寫的accept方法。
② java lambda 數組如何去重復
List<int> ages = new List<int> { 21, 46, 46, 55, 17, 21, 55, 55 };
IEnumerable<int> distinctAges = ages.Distinct();
Console.WriteLine("Distinct ages:");
foreach (int age in distinctAges)
{
Console.WriteLine(age);
}
③ java list的重復對象怎麼去除
java list的重復對象,可以使用Set集合類沒有重復的數據的特點,將list的數據存入set裡面,過濾掉重復的數據,如下代碼:
packagecom.qiu.lin.he;
importjava.util.ArrayList;
importjava.util.HashSet;
importjava.util.List;
importjava.util.Set;
publicclassCeshi{
publicstaticvoidmain(String[]args){
List<Integer>li=newArrayList<Integer>();//新建一個list結合
li.add(1);
li.add(2);
li.add(3);
li.add(1);
Set<Integer>se=newHashSet<Integer>();//新建一個set集合
for(Integerinteger:li){
se.add(integer);//過濾重復的數據
}
for(Integerinteger:se){
System.out.println("輸出list數組的去重的每個數據"+integer);
}
}
}
運行結果如下:
④ java Lambda 表達式,如何遍歷一個list後,把每個變數的值拿到求和,並且返回一個map呢
你的意思是要拿到每一個變數吧?再new一個map,for循環裡面把變數逐一存進去就OK了
⑤ java對List去重並排序,如何快速地去掉兩個
Java8開始,對數值,集合等提供了Stream流操作,可以方便的對集合進行操作.
比如 篩選,過濾,去重, 映射, 排序,規約,收集 等操作
簡單的參考代碼如下
importjava.util.Arrays;
importjava.util.List;
importjava.util.stream.Collectors;
//使用Java8的Stream特性和Java8的Lambda語句
publicclassDemo{
publicstaticvoidmain(String[]args){
//需求:集合去重,排序,得到一個新集合裡面的元素是之前元素的平方
List<Integer>list=Arrays.asList(5,2,2,1,3,4);
List<Integer>listResult= list
.stream()//得到流
.distinct()//去重5,2,1,3,4
.sorted()//自然排序,也可以自定義排序規則1,2,3,4,5
.map(x->x*x)//每個元素求平方1,4,9,16,25
.collect(Collectors.toList());//收集並返回
System.out.println(listResult);//1,4,9,16,25
}
}
⑥ JAVA中,如何去掉LIST里的重復元素
最好的辦來法是用Set,因為Set裡面自存放的數據是不重復的。
如果你不想用Set,那還可以向下面這樣處理。
List list_tmp = new ArrayList(); //建立一個用於臨時存放不重復list元素的List集合。
for(Object obj:list){
//可以根據需要,在這里加上強制轉型。
//如list裡面存放的是一個User對象,那麼加上User u = (User) obj;
if(!list_tmp.contains(obj)){ //注意contains方法是通過equals方法進行比較的所以你要根據你自己的需要看是否需要重寫list對象裡面的equals方法。
list_tmp.add(obj);//如果上面加了強制轉型,這里需要寫list_tmp.add(u);
}
}
⑦ 在JAVA中,兩個List,要從第一個List中去除所有第二個List中與之重復的元素
將List2轉為Map,Employee屬性作為key,對象為value,循環list1判斷key是否在Map中 有就移除
⑧ Java8新特性lambda表達式有什麼用
Java 8終於引進了lambda表達式,這標志著Java往函數式編程又邁進了一小步。
在Java 8以前的代碼中,為了實現帶一個方法的介面,往往需要定義一個匿名類並復寫介面方法,代碼顯得很臃腫。比如常見的Comparator介面:
String[]oldWay="".split("");
Arrays.sort(oldWay,newComparator<String>(){
@Override
publicintcompare(Strings1,Strings2){
//忽略大小寫排序:
returns1.toLowerCase().compareTo(s2.toLowerCase());
}
});
System.out.println(String.join(",",oldWay));
對於只有一個方法的介面,在Java 8中,現在可以把它視為一個函數,用lambda表示式簡化如下:
String[]newWay="".split("");
Arrays.sort(newWay,(s1,s2)->{
returns1.toLowerCase().compareTo(s2.toLowerCase());
});
System.out.println(String.join(",",newWay));
Java 8沒有引入新的關鍵字lambda,而是用()->{}這個奇怪的符號表示lambda函數。函數類型不需要申明,可以由介面的方法簽名自動推導出來,對於上面的lambda函數:
(s1,s2)->{
returns1.toLowerCase().compareTo(s2.toLowerCase());
});
參數由Comparator<String>自動推導出String類型,返回值也必須符合介面的方法簽名。
實際上,lambda表達式最終也被編譯為一個實現類,不過語法上做了簡化。
對於Java自帶的標准庫里的大量單一方法介面,很多都已經標記為@FunctionalInterface,表明該介面可以作為函數使用。
以Runnable介面為例,很多時候幹活的代碼還沒有定義class的代碼多,現在可以用lambda實現:
publicstaticvoidmain(String[]args){
//oldway:
RunnableoldRunnable=newRunnable(){
@Override
publicvoidrun(){
System.out.println(Thread.currentThread().getName()+":OldRunnable");
}
};
RunnablenewRunnable=()->{
System.out.println(Thread.currentThread().getName()+":NewLambdaRunnable");
};
newThread(oldRunnable).start();
newThread(newRunnable).start();
}
在未來的Java代碼中,會出現越來越多的()->{}表達式。
⑨ Java兩個List的過濾問題
packagetest;
importjava.util.ArrayList;
importjava.util.List;
publicclassA1
{
publicstaticvoidmain(String[]args)
{
<String>list1=newArrayList<String>();
list1.add("JSON--B--TEST");
list1.add("JSON--A--TEST");//deletethisitem
list1.add("JSON--C--TEST");
List<String>list2=newArrayList<String>();
list2.add("B");
list2.add("C");
Stringtemp=list2.toString().replaceAll("[\[\]\s]","").replaceAll("\,","|");
System.out.println(temp);
Stringreg="^.*("+temp+").*$";
for(inti=0;i<list1.size();i++)
{
if(!list1.get(i).matches(reg))
{
list1.remove(i);
}
}
System.out.println(list1.toString());
}
}