1. 程式人生 > >JAVA list物件排序加去重問題

JAVA list物件排序加去重問題

物件類實現繼承Comparable介面重寫compareTo方法實現排序功能,重寫equals方法實現去重功能(根據ID去重)
public class TestAbilityAnalyze implements Comparable<TestAbilityAnalyze> {
private String abilityID;
/**
* 能力名稱
*/
private String abilityName;
/**
* 個人正確率
*/
private double accuracy;
/**
* 班級正確率
*/
private double averageByClassID;
/**
* 年級正確率
*/
private double averageByGradeID;

public String getAbilityID() {
return abilityID;
}

public void setAbilityID(String abilityID) {
this.abilityID = abilityID;
}

public String getAbilityName() {
return abilityName;
}

public void setAbilityName(String abilityName) {
this.abilityName = abilityName;
}

public double getAccuracy() {
return accuracy;
}

public void setAccuracy(double accuracy) {
this.accuracy = accuracy;
}

public double getAverageByClassID() {
return averageByClassID;
}

public void setAverageByClassID(double averageByClassID) {
this.averageByClassID = averageByClassID;
}

public double getAverageByGradeID() {
return averageByGradeID;
}

public void setAverageByGradeID(double averageByGradeID) {
this.averageByGradeID = averageByGradeID;
}

@Override
public int compareTo(TestAbilityAnalyze o) {
// TODO Auto-generated method stub
return (int) (this.getAccuracy() - o.getAccuracy());
}

public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (!(obj instanceof Test))
return false;
TestAbilityAnalyze other = (TestAbilityAnalyze) obj;
if (abilityID == null) {
if (other.abilityID == null)
return true;
else
return false;
} else {
if (abilityID.equals(other.abilityID))
return true;
else
return false;
}
}
}

根據正確率排序,然後使用set去重
Collections.sort(analyzes);
Set<TestAbilityAnalyze> result = new TreeSet<>((o1, o2) -> o1.getAbilityID().compareTo(o2.getAbilityID()));
result.addAll(analyzes);

相關推薦

JAVA list物件排序問題

物件類實現繼承Comparable介面重寫compareTo方法實現排序功能,重寫equals方法實現去重功能(根據ID去重)public class TestAbilityAnalyze implements Comparable<TestAbilityAnalyze> { private St

java8的新特性list排序

package io.jcwl.modules.drives.controller; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.s

Java List<T>

1.List<T>,是個泛型,實際業務裡,它經常是一個bean,例如Person類,裡面有age、name等屬性。 2.如果List<Person>  ps 有重複的資料,我們需要去重的話,就要在Person類裡寫上equal()方法和HashCode()方法。注:不寫這個

Java List物件合併資料

最近有批資料需要處理 資料格式為List<bean> list=new ArrayList<bean>();裡面存在大批相同的資料,現在需要去除相同的資料即相同資料只留下來一條,並且需要將相同資料中一個數值疊加。本來以為處理挺簡單的,後來硬生生搞了好幾個小時,先將實現過程放在

Java之大數據位圖法(無排序排序排序,數據壓縮)

align system 容器類 底層 修改 歸並排序 概念 ppr long 大數據位圖法(無重復排序,重復排序,去重復排序,數據壓縮)之Java實現 位圖法介紹 位圖的基本概念是用一個位(bit)來標記某個數據的存放狀態,由於采用了位為單位來存放數據,所以節

java對一個int陣列進行排序

思路: 1、使用 HashSet 進行去重 2、將 HashSet 變為 TreeSet 3、使用 TreeSet 進行排序

java steam List指定字段

foreach light ket 實體 list 鏈接 .com tlist num 如:角色去重處理 baseRoleList = baseRoleList.stream().collect(Collectors.collectingAndThen(Collector

48.reduce排序,取最大值

prev col function red logs ngui ras value ber var arr = [2,4,1,-1,9] //取最大值 var maxValue = arr.reduce(function(a,b){ return a>

冒泡排序練習

document alert ++ write span font 冒泡 冒泡排序 doc 冒泡排序: var arr = [9, 8, 7, 6, 2, 1, 3, 5, 4] for(n = 0; n < arr.length; n++) { for(v

冒泡排序

冒泡 doc length 冒泡排序 document for 去重 排序 [] a= [1, 2, 2, 2, 3, 3, 4, 4, 5, 6]; b= []; for(x=0;x<a.length;x++){ s=0; for(y=0;y<

[leetcode]83. Remove Duplicates from Sorted List有序鏈表

nbsp IV element pan while mage next ima ret Given a sorted linked list, delete all duplicates such that each element appear only once. Ex

List的五種方式

arraylist col 縮減 all 去重 nta () contains 順序 //set集合去重,不改變原有的順序 public static void pastLeep1(List<String> list){ System.

js讓一個物件 陣列,

  方法一: 一個數組中的每一項都是物件,現在需要將這個物件中id相同的只保留一個,即根據id去重,通過以上方法可實現 var person = [ { id: 0, name: "小明" }, { id: 1, name: "小張" }, { id:

陣列的方法總結(包括物件陣列的方法)

陣列的去除在真實專案中是非常的常用,那麼在這裡總結一下物件陣列及基本型別陣列的去重方法,主要利用了物件的鍵值是唯一的一個特性。 1:去重方法一利用陣列的索引對應的值。 let arr = [2,3,3,3,2,4,2]; console.log("arr is a instance of a

MySQL—增刪改查,分組,連表,limit,union,alter,排序

MySQL增刪改查   在表格的增刪改查中,查的內容是最多的,包括group by ,join,limit,union,alter,排序都是服務於查的 #sql語句資料行操作補充 #增加: #insert into table_name(欄位1,欄位2)

JS 陣列,陣列物件的合併方法

這次對陣列的操作,我們使用es6的新語法來完成,所以在看下邊程式碼之前,我們要了解我們下邊要用到的es6中的set集合,和for...of 方法: 首先介紹set集合: ES6提供了新的資料結構Set,它類似於陣列,但是成員的值都是唯一的,沒有重複的值。 Set函式可以接受一個數組(

list按照欄位

private static ArrayList<InformationDetailVo> removeDuplicate(List<InformationDetailVo> list) { Set<InformationDetailVo&g

Sum It Up (搜尋)

Sum It Up Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Submission(s) : 12   Accepted Submissio

list的五種方法

面試中經常被問到的list如何去重,一般是口述,不需要程式碼體現,這個時候,思維一定要清晰,可以羅列出集中去重的方法,以展現你對list資料結構,以及相關方法的掌握,體現你的java基礎學的是否牢固  下面,我就將五種方法逐一展現  新建一個list陣列:  List lis

C++ STL排序函式

陣列排序 (100/100 分數) 題目描述 輸入n個數,對這n個數去重之後排序,並輸出從小到大排序結果 (友情提示:去重函式unique 排序函式sort 具體函式使用規則請查閱相關文件) 輸入描述 首先輸入n,然後接著輸入n個數。其中1<=n&l