lz ?你好
我們提供的服務(wù)有:成都網(wǎng)站建設(shè)、做網(wǎng)站、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、無錫ssl等。為近千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的無錫網(wǎng)站制作公司
這個(gè)就是一個(gè)比較簡單的算法題 , 你可以自己寫
但是用Java語言就不需要了 , Java自帶泛型相關(guān)的類 , 很有用
其中TreeSet集合能自動識別添加的是否重復(fù) , 重復(fù)的將不會添加 , 很方便
以下是實(shí)現(xiàn)代碼:
import?java.util.List;
import?java.util.Scanner;
public?class?DeleteRepeated?{
private?String?str;
private?TreeSetString?noReapted;//帶有String類型的TreeSet泛型
public?DeleteRepeated()?{
Scanner?in?=?new?Scanner(System.in);
System.out.println?("輸入一個(gè)字符串:");
str?=?in.nextLine();
noReapted?=?new?TreeSet();
}
//清楚重復(fù)的數(shù)據(jù)
public?void?removeRepeated(){
for?(int?i?=?0;?i??str.length();?i++){
noReapted.add(""+str.charAt(i));
//str.charAt(i)返回的是char型??所以先加一個(gè)""空格?,?轉(zhuǎn)換成String型
//TreeSet泛型能保證重復(fù)的不加入?,?而且有序
}
str?=?"";
for(String?index:noReapted){
str?+=?index;
}
//輸出
System.out.println?(str);
}
public?static?void?main(String[]?args)?{
DeleteRepeated?dr?=?new?DeleteRepeated();
dr.removeRepeated();
}
}
運(yùn)行截圖:
希望能幫助你哈
import?java.util.HashSet;
import?java.util.Set;
public?class?Test1?{
private?static?final?SetString?str?=?new?HashSet();
public?static?void?main(String?args[])?{
Test1.add("1");
Test1.add("2");
Test1.add("2");
Test1.add("1");
Test1.add("3");
Test1.add("2");
}
public?static?void?add(String?toAdd)?{
if(!str.add(toAdd))?System.out.println(toAdd);
}
}
方法一: 通過Iterator 的remove方法
public void testList() {
ListInteger list=new ArrayListInteger();
list.add(1);
list.add(2);
list.add(4);
list.add(1);
list.add(2);
list.add(5);
list.add(1);
ListInteger listTemp= new ArrayListInteger();
IteratorInteger it=list.iterator();
while(it.hasNext()){
int a=it.next();
if(listTemp.contains(a)){
it.remove();
}
else{
listTemp.add(a);
}
}
for(Integer i:list){
System.out.println(i);
}
}
lhkzyz
java List 去重(兩種方式)
博客分類:
java
java
方法一: 通過Iterator 的remove方法
Java代碼
public void testList() {
ListInteger list=new ArrayListInteger();
list.add(1);
list.add(2);
list.add(4);
list.add(1);
list.add(2);
list.add(5);
list.add(1);
ListInteger listTemp= new ArrayListInteger();
IteratorInteger it=list.iterator();
while(it.hasNext()){
int a=it.next();
if(listTemp.contains(a)){
it.remove();
}
else{
listTemp.add(a);
}
}
for(Integer i:list){
System.out.println(i);
}
}
public void testList() {
ListInteger list=new ArrayListInteger();
list.add(1);
list.add(2);
list.add(4);
list.add(1);
list.add(2);
list.add(5);
list.add(1);
ListInteger listTemp= new ArrayListInteger();
IteratorInteger it=list.iterator();
while(it.hasNext()){
int a=it.next();
if(listTemp.contains(a)){
it.remove();
}
else{
listTemp.add(a);
}
}
for(Integer i:list){
System.out.println(i);
}
}
方法二:直接將結(jié)果賦值給另一個(gè)List
public void testList2() {
ListInteger list=new ArrayListInteger();
list.add(1);
list.add(2);
list.add(4);
list.add(1);
list.add(2);
list.add(5);
list.add(1);
ListInteger tempList= new ArrayListInteger();
for(Integer i:list){
if(!tempList.contains(i)){
tempList.add(i);
}
}
for(Integer i:tempList){
System.out.println(i);
}
}
java中找出數(shù)組中重復(fù)的數(shù)并去除的代碼如下:
public?static?void?testA()?{?
String?[]?str?=?{"Java",?"C++",?"Php",?"C#",?"Python",?"C++",?"Java"};?
for?(String?elementA:str?)?{?
System.out.print(elementA?+?"?");?
}?
ListString?list?=?new?ArrayListString();?
for?(int?i=0;?istr.length;?i++)?{?
if(!list.contains(str[i]))?{?
list.add(str[i]);?
}?
}?
System.out.println();?
String[]?newStr?=?list.toArray(new?String[1]);?//返回一個(gè)包含所有對象的指定類型的數(shù)組??
for?(String?elementB:newStr?)?{?
System.out.print(elementB?+?"?");?
}?
System.out.println();?
}
所謂數(shù)組,是無序的元素序列。 若將有限個(gè)類型相同的變量的集合命名,那么這個(gè)名稱為數(shù)組名。組成數(shù)組的各個(gè)變量稱為數(shù)組的分量,也稱為數(shù)組的元素,有時(shí)也稱為下標(biāo)變量。用于區(qū)分?jǐn)?shù)組的各個(gè)元素的數(shù)字編號稱為下標(biāo)。數(shù)組是在程序設(shè)計(jì)中,為了處理方便, 把具有相同類型的若干元素按無序的形式組織起來的一種形式。 這些無序排列的同類數(shù)據(jù)元素的集合稱為數(shù)組。
舉例:
int a[10]; 說明整型數(shù)組a,有10個(gè)元素。
float b[10],c[20]; 說明實(shí)型數(shù)組b,有10個(gè)元素,實(shí)型數(shù)組c,有20個(gè)元素。
char ch[20]; 說明字符數(shù)組ch,有20個(gè)元素。
數(shù)組中的所有元素都具有相同類型(這一點(diǎn)和結(jié)構(gòu)或類中的字段不同,它們可以是不同類型)。數(shù)組中的元素存儲在一個(gè)連續(xù)性的內(nèi)存塊中,并通過索引來訪問(這一點(diǎn)也和結(jié)構(gòu)和類中的字段不同,它們通過名稱來訪問)。
ListString?list?=?new?ArrayList();
/*list.add("abc");
list.add("abc");
list.add("def");
list.add("bcd");*/
SetString?set?=?new?LinkedHashSet();//這種方式保證去重后的元素相對位置不變
//SetString?set?=?new?HashSet();//這種方式去重后元素的位置很有可能變化了
set.addAll(list);
list.clear();
list.addAll(set);
for(String?s?:?list){
System.out.println(s);
}
整個(gè)思路就是利用set中的元素是不重復(fù)的,來達(dá)到去重的目的
你要去除的值是基本數(shù)據(jù)類型還是對象呢?
如果不想存重復(fù)數(shù)據(jù)何不用Set呢。。。
其實(shí)吧。。在知道上提問不如在網(wǎng)頁上查。。這個(gè)是我查到的第一個(gè)。。網(wǎng)頁里的內(nèi)容,他一共使用了3種方式
最近項(xiàng)目中需要對list集合中的重復(fù)值進(jìn)行處理,大部分是采用兩種方法,一種是用遍歷list集合判斷后賦給另一個(gè)list集合,一種是用賦給set集合再返回給list集合。
但是賦給set集合后,由于set集合是無序的,原先的順序就打亂了。所以我又想著能不能用set的特性進(jìn)行去重又不打亂順序呢?
試了一下,也是可以的,幾種方法在不同情況下都有各自的優(yōu)勢。現(xiàn)在將代碼寫出來,比較一下。
//set集合去重,不打亂順序
public static void main(String[] args){
ListString list = new ArrayListString();
list.add("aaa");
list.add("bbb");
list.add("aaa");
list.add("aba");
list.add("aaa");
Set set = new HashSet();
List newList = new ArrayList();
for (String cd:list) {
if(set.add(cd)){
newList.add(cd);
}
}
System.out.println( "去重后的集合: " + newList);
}123456789101112131415161718
//遍歷后判斷賦給另一個(gè)list集合
public static void main(String[] args){
ListString list = new ArrayListString();
list.add("aaa");
list.add("bbb");
list.add("aaa");
list.add("aba");
list.add("aaa");
ListString newList = new ArrayListString();
for (String cd:list) {
if(!newList.contains(cd)){
newList.add(cd);
}
}
System.out.println( "去重后的集合: " + newList);
}1234567891011121314151617
//set去重
public static void main(String[] args){
ListString list = new ArrayListString();
list.add("aaa");
list.add("bbb");
list.add("aaa");
list.add("aba");
list.add("aaa");
Set set = new HashSet();
List newList = new ArrayList();
set.addAll(list);
newList.addAll(set);
System.out.println( "去重后的集合: " + newList);
}12345678910111213141516
//set去重(縮減為一行)
public static void main(String[] args){
ListString list = new ArrayListString();
list.add("aaa");
list.add("bbb");
list.add("aaa");
list.add("aba");
list.add("aaa");
List newList = new ArrayList(new HashSet(list));
System.out.println( "去重后的集合: " + newList);
}12345678910111213
hashset不進(jìn)行排序,還有一種方法是用treeset,去重并且按照自然順序排列,將hashset改為treeset就可以了。(原本的順序是改變的,只是按照字母表順序排列而已)
//去重并且按照自然順序排列
List newList = new ArrayList(new TreeSet(list));