list過濾重復
Ⅰ 如何過濾list中的重復數據
public class TesFilterList {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("123");
list.add("nihao");
list.add("nihao");
list.add("nihao");
list.add("nihao");
list.add("456");
list.add("789");
int len = list.size();
for(int i=0; i<len-1; i++){
String temp = list.get(i);
for(int j=i+1; j<len; j++){
if(temp.equals(list.get(j))){
list.remove(j);
j-- ;
len-- ;
}
}
}
for(int m=0; m<len; m++){
System.out.print(list.get(m) + " ");
}
}
}
Ⅱ 如何在List集合中去除重復元素
通過循環進行刪除
public static void removeDuplicate(List list) {
for ( int i = 0 ; i < list.size() - 1 ; i ++ ) {
for ( int j = list.size() - 1 ; j > i; j -- ) {
if (list.get(j).equals(list.get(i))) {
list.remove(j);
}
}
}
System.out.println(list);
}通過HashSet刪除
public static void removeDuplicate(List list) {
HashSet h = new HashSet(list);
list.clear();
list.addAll(h);
System.out.println(list);
}
3、刪除重復元素,並保持順序。(我沒試)
public static void removeDuplicateWithOrder(List list) {
Set set = new HashSet();
List newList = new ArrayList();
for (Iterator iter = list.iterator(); iter.hasNext();) {
Objectelement = iter.next();
if (set.add(element))
newList.add(element);
}
list.clear();
list.addAll(newList);
System.out.println( " remove plicate " + list);
}
4、定義一個方法,調用即可。
publi List<String> getNewList(List<String> li){
List<String> list = new ArrayList<String>();
for(int i=0; i<li.size(); i++){
String str = li.get(i); //獲取傳入集合對象的每一個元素
if(!list.contains(str)){ //查看新集合中是否有指定的元素,如果沒有則加入
list.add(str);
}
}
return list; //返回集合
}
public class Test{
public static void main(String[] args){
ArrayList<String> arr = new ArrayList<String>();
arr.add("aaa");
arr.add("bbb");
arr.add("aaa");
arr.add("ccc");
arr = getNewList(arr); //方法去重
System.out.println(arr);
}
}
package com.test;
import java.util.*;public class Test { /**
AAAA AAAA BBBB BBBB CCCC CCCC CCCC CCCC */
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("AAAA");
list.add("AAAA");
list.add("AAAA");
list.add("BBBB");
list.add("BBBB");
list.add("BBBB");
list.add("CCCC");
list.add("CCCC");
list.add("CCCC");
list.add("DDDD"); new Test().removeDuplicateWithOrder(list);// System.out.println(list); } // 刪除ArrayList中重復元素
public static void removeDuplicate(List list) { for (int i = 0; i < list.size() - 1; i++) { for (int j = list.size() - 1; j > i; j--) { if (list.get(j).equals(list.get(i))) {
list.remove(j);
}
}
}
System.out.println(list);
} // 方法二:通過HashSet剔除 // 刪除ArrayList中重復元素,add進去順序就變了不考慮順序的話可以使用
public static void removeDuplicate1(List list) {
HashSet h = new HashSet(list);
list.clear();
list.addAll(h);
System.out.println(list);
} // 方法三: 刪除ArrayList中重復元素,保持順序 // 刪除ArrayList中重復元素,保持順序
public static void removeDuplicateWithOrder(List list) {
Set set = new HashSet();
List newList = new ArrayList(); for (Iterator iter = list.iterator(); iter.hasNext();) {
Object element = iter.next(); if (set.add(element))
newList.add(element);
}
list.clear();
list.addAll(newList);
System.out.println(" remove plicate " + list);
}
}
Ⅲ 如何去掉一個list中重復的數據
1、通過循環進行刪除
public static void removeDuplicate(List list) {
for ( int i = 0 ; i < list.size() - 1 ; i ++ ) {
for ( int j = list.size() - 1 ; j > i; j -- ) {
if (list.get(j).equals(list.get(i))) {
list.remove(j);
}
}
}
System.out.println(list);
}
2、通過HashSet刪除
public static void removeDuplicate(List list) {
HashSet h = new HashSet(list);
list.clear();
list.addAll(h);
System.out.println(list);
}
3、刪除重復元素,並保持順序。(我沒試)
public static void removeDuplicateWithOrder(List list) {
Set set = new HashSet();
List newList = new ArrayList();
for (Iterator iter = list.iterator(); iter.hasNext();) {
Object element = iter.next();
if (set.add(element))
newList.add(element);
}
list.clear();
list.addAll(newList);
System.out.println( " remove plicate " + list);
}
4、定義一個方法,調用即可。
publi List<String> getNewList(List<String> li){
List<String> list = new ArrayList<String>();
for(int i=0; i<li.size(); i++){
String str = li.get(i); //獲取傳入集合對象的每一個元素
if(!list.contains(str)){ //查看新集合中是否有指定的元素,如果沒有則加入
list.add(str);
}
}
return list; //返回集合
}
public class Test{
public static void main(String[] args){
ArrayList<String> arr = new ArrayList<String>();
arr.add("aaa");
arr.add("bbb");
arr.add("aaa");
arr.add("ccc");
arr = getNewList(arr); //方法去重
System.out.println(arr);
}
}
Ⅳ C#中 list<object> 去除重復的數據 求最簡單的方法!!
//導入linq命名空間, 然後distinct一下就可以了. 關鍵代碼如下:
using System.Linq;
//比如,list實例為list
var obj = list.Distinct();
//或者麻煩點要根據list的欄位xxx過濾回就是
var obj_1=from p in list select p.xxx distinct();
擴展答資料
list()函數與array()類似,只是它可以在一次操作中從一個數組內提取多個值,同時為多個變數賦值。其形式如下:
voidlist(mixed…)從資料庫或文件中提取信息時,這種構造尤其有用。例如,假如你希望格式化並輸出從一個文本,文件中讀取信息。文件的每一行都包含用戶信息,如姓名、職業和喜愛的顏色,每一項用豎線分隔。典型的一行如下所示:
Nino Sanzi|profesional golfer|green
可以通過一個簡單的循環使用list()來讀取每一行,將各部分數據賦給變數,按照需要格式化並輸出數據。
Ⅳ 去除list集合中重復項的幾種方法
因為用到list,要去除重復數據,嘗試了幾種方法。記錄於此。。。
測試數據:
List<string> li1 = new List<string> { "8", "8", "9", "9" ,"0","9"};
List<string> li2 = new List<string> { "張三", "張三", "李四", "張三", "王五", "李四" };
List<string> li3 = new List<string> { "A", "A", "C", "A", "C", "D" };
List<string> li4 = new List<string> { "12", "18", "19", "19", "10", "19" };
方法一:
HashSet<string> hs = new HashSet<string>(li1); //此時已經去掉重復的數據保存在hashset中
方法二:
for (int i = 0; i < li2.Count; i++) //外循環是循環的次數
{
for (int j = li2.Count - 1 ; j > i; j--) //內循環是 外循環一次比較的次數
{
if (li2[i] == li2[j])
{
li2.RemoveAt(j);
}
}
}
方法三:
//把相同的用null代替。
for (int i = 0; i < li3.Count; i++)
{
for (int j = 0; j < li3.Count; j++)
{
if (i == j) continue;
if (li3[i] == li3[j])
{
li3[j] = "null";
}
}
}
方法四:
//這方法跟上面的一樣,只是變了邏輯
for (int i = 0; i < li4.Count - 1; i++)
{
for (int j = 0; j < li4.Count ; j++)
{
if (i != j)
{
if (li4[i] == li4[j])
{
li4[j] = "null";
}
}
}
}
最後輸出看結果
Console.WriteLine("li1去除重復後的值為");
hs.ToList().ForEach(item => Console.WriteLine(item));
Console.WriteLine("li2去除重復後的值為");
li2.ForEach(item => Console.WriteLine(item));
Console.WriteLine("li3去除重復後的值為");
li3.ForEach(item => Console.WriteLine(item));
Console.WriteLine("li4去除重復後的值為");
li4.ForEach(item => Console.WriteLine(item));
null我沒去掉。用的時候去掉即可。
當然。還有許多辦法。比如linq Distinct 等等都可以,看看網上的這個例子:去掉modelList中title重復的內容,不區分大小寫
class Program
{
static void Main(string[] args)
{
List<Model> modelList = new List<Model>()
{ new Model() { ID = 1, Title = "abcde" },
new Model() { ID = 2, Title = "ABCDE" },
new Model(){ ID = 3, Title = "AbcdE" },
new Model() { ID = 4, Title = "A" },
new Model() { ID = 5, Title = "a" }
};
Console.Read();
}
}
public class Model
{
public int ID { get; set; }
public string Title { get; set; }
}
解決方案一:這里比較的前提是對象的哈希代碼相等。否則不會比較,因為哈希代碼不相等。兩個對象顯然不相等
//定義一個類繼承IEqualityComparer介面
public class ModelComparer : IEqualityComparer<Model>
{
public bool Equals(Model x, Model y)
{
return x.Title.ToUpper() == y.Title.ToUpper();
}
public int GetHashCode(Model obj)
{
return obj.Title.ToUpper().GetHashCode();
}
}
調用:
modelList = modelList.Distinct(new ModelComparer()).ToList();
解決方案二:
var title = modelList.GroupBy(m => m.Title.ToLower().Trim()).Select(m => new { ID = m.FirstOrDefault().ID });
modelList = modelList.Where(m => title.Select(mo => mo.ID).Contains(m.ID)).ToList();
foreach (var item in modelList)
{
Console.WriteLine(item.ID + "\t" + item.Title);
}
當然。如果你僅僅比較兩個值是否相等。
List<string> li1 = new List<string> { "8", "8", "9", "8", "0", "9" };
li1 = li1.Distinct().ToList();
Ⅵ 在JAVA中,兩個List,要從第一個List中去除所有第二個List中與之重復的元素
將List2轉為Map,Employee屬性作為key,對象為value,循環list1判斷key是否在Map中 有就移除
Ⅶ java中怎樣去除list中重復的數據,並且顯示重復數據的條數
刪除ArrayList中重復數據保條數。
public static void removeDuplicateWithOrder(List list) 。
Set set = new HashSet()
List newList = new ArrayList()
for (Iterator iter = list.iterator(); iter.hasNext();) {
Object element = iter.next();
if (set.add(element))
newList.add(element);
list.clear();
list.addAll(newList);
System.out.println( " remove plicate " + list)。
Ⅷ 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);
}
}
Ⅸ js中如何去除list中的重復數據
最笨的方法:
varlist=[1,2,3,6,7,8,9,1,2,3,6];//有重復的數組
varobj={};//用於標記字元串
vararr=[];//去掉重復後的數組
for(vari=0,len=list.length;i<len;i++){
vars=list[i];
if(obj[s])continue;//如果字元串已經存在就跳過版
else{
obj[s]=s;//加入標記對象權中
arr.push(s);//結果放入新數組中
}
}
當jquery中有封裝好的去重復方法,還有其他第三方js插件也存在去重復的方法。
Ⅹ 如何去除List集合中重復的元素
1、通過循環進行刪除
public static void removeDuplicate(List list) {
for ( int i = 0 ; i < list.size() - 1 ; i ++ ) {
for ( int j = list.size() - 1 ; j > i; j -- ) {
if (list.get(j).equals(list.get(i))) {
list.remove(j);}}}
System.out.println(list);}
2、通過HashSet刪除
public static void removeDuplicate(List list) {
HashSet h = new HashSet(list);
list.clear();
list.addAll(h);
System.out.println(list);}
(10)list過濾重復擴展閱讀:
List集合代表一個元素有序,可重復的集合,集合中每個元素都有對應的順序索引。List介面中增加了一些根據索引操作元素的方法:
void add(int index,E element ) 在列表的指定位置插入該元素。
boolean addAll(int index,Collection c) 將集合c包含的所有元素都插入到List集合的index處。
Object get(int index) 返回集合index索引出的元素。
List額外提供的一個listIterator()方法,提供了專門操作List的方法。
ListIterator介面在Iterator的基礎上增加了如下方法:
boolean hasPrevious(): 返回該迭代器關聯的集合是否還有上一個元素。
Object previous(): 返回該迭代器的上一個元素。
void add((E e): 在指定位置插入一個元素。