记录贴
业务去重 另外还有linkedhashset和set集合可天然去重
@Data
public class Person {
private String name;
private String age;
private String gender;
}
//从特定集合/数组去除重复对象 适用全局不允许重复
public static void checkRepeat(){
Person person = new Person("3","4","5");// 12 true 13true 14true 15 false
Person person1 = new Person("3","4","5");
Person person2 = new Person("5","6","7");
Person person3 = new Person("8","9","10");
Person person4 = new Person("11","12","13");
Person person5 = new Person("11","12","13");
Person person6 = new Person("10","12","13");
List<Person>list = new ArrayList<>();
Person persons[] = {person6,person,person4,person2,person1,person3,person5};
try {
for (int i = 0;i<persons.length;i++) {
Person personA = persons[i];//0
if(!list.contains(personA)){
list.add(personA);
}else{
System.out.println("重复对象" + personA);
}
}
for (Person personx : list) {
System.out.println(personx);
}
} catch (IndexOutOfBoundsException e) {
e.printStackTrace();
}
}
输出:
重复对象Person [name=3, age=4, gender=5]
重复对象Person [name=11, age=12, gender=13]
Person [name=10, age=12, gender=13]
Person [name=3, age=4, gender=5]
Person [name=11, age=12, gender=13]
Person [name=5, age=6, gender=7]
Person [name=8, age=9, gender=10]
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
/*
* 查出实际行 去除无效string行和null
*/
public static void checkActual(){
Person person = new Person("1","2","3");
Person person1 = new Person("","2","3");
Person person2 = new Person("1","","3");
Person person3 = new Person("1","2","");
Person person4 = new Person(null,null,null);
Person person5 = new Person("","","");
List<Person>list = new ArrayList<>();
Person persons[] = {person,person1,person2,person3,person4,person5};
int rowsize = 0;
try {
for (Person personx : persons) {
if(isAllFieldNull(personx)){
rowsize++;
list.add(personx);
}
}
System.out.println("共有可操作对象:" + rowsize);
for (Person personx : list) {
System.out.println(personx);
}
} catch (Exception e) {
e.printStackTrace();
}
}
//判断该对象是否: 返回ture表示所有属性为null 返回false表示不是所有属性都是null
public static boolean isAllFieldNull(Object obj) throws Exception{
Class<? extends Object> stuCla = (Class<? extends Object>) obj.getClass();// 得到类对象
Field[] fs = stuCla.getDeclaredFields();//得到属性集合
boolean flag = false;
for (Field f : fs) {//遍历属性
f.setAccessible(true); // 设置属性是可以访问的(私有的也可以)
Object val = f.get(obj);// 得到此属性的值
if(val != null&&!val.equals("")) {//只要有1个属性不为空,那么就不是所有的属性值都为空
flag = true;
break;
}
}
return flag;
}
输出:
共有可操作对象:4
Person [name=1, age=2, gender=3]
Person [name=, age=2, gender=3]
Person [name=1, age=, gender=3]
Person [name=1, age=2, gender=]
//冒泡排序
int[]s = {1,2,3,4,5,6,7,8,9};
int temp = 0;
int n = 1;
for (int i = 0; i < s.length; i++) {
for (int j = n; j < s.length; j++) {
if (s[i] < s[j]) {
temp = s[j];
s[j] = s[i];
s[i] = temp;
}
}
n++;
}
for (int i : s) {
System.out.print(i+ "\t");
}