list字符串去重的三种方式
求List< String >中元素去重,并且求出去重后的个数
String字符串逆序输出的两种方式
http://blog.csdn.net/sunrainamazing/article/details/71583954String字符串的之间的各类转化操作
http://blog.csdn.net/sunrainamazing/article/details/71583685判断是否为回文字符串,逆序输出字符串
http://blog.csdn.net/sunrainamazing/article/details/55222791
- 采用原始的for循环遍历
- 采用set集合的特点
- 采用Java8流处理方式
package sun.rain.amazing.stream;
import org.junit.Test;
import java.util.*;
import java.util.stream.Collectors;
/**
* Created by sunRainAmazing on SUN_RAIN_AMAZING
* @author sunRainAmazing
*/
public class ListCaseOperate {
private static List<String> list3;
static{
//注意 Arrays.asList的陷阱 返回的并不是 java.util.ArrayList
//进行remove操作时会报错
// list3 =
// Arrays.asList("tom","com","boss"
// ,"boss","jerry","jerry");
list3 = new ArrayList<String>(
Arrays.asList("tom","com","boss","boss","jerry","jerry"));
}
/**
* 将 list3 的数据进行去重操作 -- 采用 for循环判断
* 若直接只采用 Arrays.asList进行初始化
* 不支持 remove()操作 UnsupportedOperationException
*
* 这是因为 Arrays.asList返回的 ArrayList
* 并不是java.util.ArrayList,
* 而是在Arrays类中重新定义的一下内部类ArrayList
* 这个内部类 ArrayList并没有重写remove方法。
* 解决方式:
* List<String> list3 =
* new ArrayList<String>
* (Arrays.asList("tom","com","jerry"));
*
* E remove(int index)
* 移除列表中指定位置的元素(可选操作)。
* 将所有的后续元素向左移动(将其索引减 1)。
* 返回从列表中移除的元素。
*/
@Test
public void getDistinctByFor(){
List<String> list = list3;
for(int i=0; i<list.size(); i++){
for(int j=i+1; j<list.size(); j++){
if(list.get(i).equals(list.get(j))){
list3.remove(i); //注意这里是list3
}
}
}
System.out.println(list3);
System.out.println(list3.size());
}
/**
* 将 list3 的数据进行去重操作 -- 采用Set去重
*/
@Test
public void getDistinctBySet(){
Set<String> set = new HashSet<>();
set.addAll(list3);
System.out.println(set);
System.out.println(set.size());
}
/**
* 将 list3 的数据进行去重操作 -- 采用 Stream 去重
*/
@Test
public void getDistinctByStream(){
System.out.println(list3.stream()
.distinct()
.collect(Collectors.toList()));
System.out.println(list3.stream()
.distinct()
.count());
}
}