1. 程式人生 > >java集合示例 小心重載的陷阱

java集合示例 小心重載的陷阱

spring 分析 arraylist cati 最終 enum 結果 fig import

package com.hra.riskprice;

import com.hra.riskprice.SysEnum.Factor_Type;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import java.util.*;
@SpringBootApplication
public class RiskpriceApplication {

    public static void main(String[] args) {
        Set
<Integer> set=new TreeSet<>(); List<Integer> list=new ArrayList<Integer>(); for(int i=-3;i<3;i++){ set.add(i); list.add(i); } System.out.println("remove 前:");//[-3, -2, -1, 0, 1, 2] System.out.println(set+" "+list);
for(int i=0;i<3;i++){ set.remove(i);//boolean remove(Object o); list.remove(i);//E remove(int index) } System.out.println("remove 後:"); System.out.println(set+" "+list); //最終結果 set如預期因為調用的boolean remove(0bject 0)這個重載 移除了正數 剩下 -3,-2,-1 //最終結果 list不如預期產生了混論 剩下 -2,0,2 原因見#list解釋#
//#list解釋# list調用的是E remove(int index)這個重載 剛開始list有 :-3,-2,-1,0,1,2這些元素 //這裏我們標出了編號,每次remove後編號都會重新計算(很重要哦,這句話) -3(0),-2(1),-1(2),0(3),1(4),2(5) //list remove(0) 移除編號為0的元素後剩下 -2(0),-1(1),0(2),1(3),2(4) //list.remove(1) 移除編號為1的元素後剩下 -2(0),0(1),1(2),2(3) //list.remove(2) 移除編號為2的元素後剩下 -2(0),0(1),2(3) //#list解釋# //如上我們分析出了list不如預期的原因,那麽如何解決呢,讓list.remove的時候調用boolean remove(Object o)這個重載呢,簡單改為list.remove((Integer) i)就好了 } }

java集合示例 小心重載的陷阱