标签:sem 添加 相同 操作 jdk 增加 sublist 取出 for
目录
list.addAll(list);// 向集合追加一个collection,只可追加collection,由于java不提供collection的实现,由它的下级接口来实现
list.addAll(4, list);// 与上述含义相同, “4”意为追加元素所放的位置
list.subList(1,3)//返回下标从1到3的数据 ,包括左不包括右 即返回下标为1,2的数据
//在集合中查找元素 ,"a"如果有 ,返回所查找元素的下标,如果不存在则返回-1
list.indexOf("a");
list.clear();// 调用clear方法清空集合中的所有数据
//该方法去比较两个对象时,首先先去判断两个对象是否具有相同的地址,如果是同一个对象的引用,则直接放回true;如果地址不一样,
//则证明不是引用同一个对象,接下来就是挨个去比较两个字符串对象的内容是否一致,完全相等返回true,否则false。
list.equals(arr);//false
public boolean isEmpty() {
return size == 0;
}
例子:我有一个空着的水杯(list),而你没有,那你是null,我的size为0。你想装水需要去买个水杯(new ArrayList();),我就可以直接装水(list.add(水))。你要是没有杯子直接倒水,水就流出去啦(空指针异常)。所以用做判断的时候经常连用list!=null && list.size()!=0 。
区别: 是否存在,存在的话是否存放元素。因此最先判断是否存在实物,再判断实物中是否存放东西。
List<Integer> requiredCol = new ArrayList<Integer>() {{ add(1);add(2);add(3);add(4); }};
list.remove(i);//移除指定位置数据
contains方法的源码是用equals()比较的,也就是说比较的是地址,所以要在类中重写equals()方法.看代码如何实现的
public boolean equals(Object obj) {
if(this==obj)//地址相同
return true;
else if(obj!=null&&obj instanceof User) {
User u=(User)obj;
return this.name.equals(u.name)&&this.pswd.equals(u.pswd);
}
else
return false;
}
//为了将List转为数组,JDK提供了toArray
//实现方式一:
String [] array=(String[]) list.toArray(new String[list.size()]);
for(String arrays: array) {
System.out.println(arrays);
}
//方式二:
String [] arr=new String [list.size()];
list.toArray(arr);
for(String arrs: arr) {
System.out.println(arrs);
}
//校验list是否存在重复的编码且重复元素是哪个
List<String> checkCode = new ArrayList<>();
for (List<String> list : lists) {
String code = list.get(1);
checkCode.add(code);
}
HashSet<String> codeSet = new HashSet<>();
for (String code : checkCode) {
boolean b = codeSet.add(code);
if (!b) {
throw new Exception("文件中存在重复的编码: " + code);
}
}
//只检验是否存在重复元素
HashSet<String> set = new HashSet<>(list);
Boolean result = set.size() == list.size() ? true : false;
List<String> ids=list.stream().map(User::getId).collect(Collectors.toList());
String str = List.stream().map(User::getId).collect(Collectors.joining(","));
String str = List.stream().map(Restriction::getId).collect(Collectors.toList()).stream().map(w->w.toString()).collect(Collectors.joining(","));
List<Employee> employees = persons.stream()
.filter(p -> p.getLastName().equals("l1"))
.map(p -> new Employee(p.getName(), p.getLastName(), 1000))
.collect(Collectors.toList());
User match = users.stream().filter((user) -> user.getId() == 1).findAny().get();
Map<Integer, String> result1 = list.stream().collect(
Collectors.toMap(User::getId, Hosting::getName));
//List1-List2
List<String> reduce1 = list1.stream().filter(item -> !list2.contains(item)).collect(Collectors.toList());
List<String> reduce2 = list1.stream().filter(list2::contains).collect(Collectors.toList());
list1.addAll(list2);
List<String> reduce3 = list1.stream().distinct().collect(Collectors.toList());
@Override
@Transactional(propagation = Propagation.SUPPORTS)
public List<Group> findAll() {
List<Group> all = groupDAO.findAll();
/*处理小组目前标签*/
/*对查到的所有小组进行遍历得知该小组所在班级id和小组id,根据这两个id查询到学生集合
* 根据得到的学生查询到每个学生的标签集合
* set1.retainAll(set2);中set1就是交集*/
for (Group group : all) {
List<List<Lable>> allCourses=new ArrayList<>();
String cid = group.getClazzId();
String gid = group.getId();
List<User> users = userDAO.queryUserBycg(cid, gid);
for (User user : users) {
/*allCourses存放的是集合类型,为该小组内每个学生的标签集合*/
allCourses.add(user.getLables());
}
/*采用reduce方法对标签集合进行交集处理,两两求交集,若有交集则返回交集,若没有交集则返回为空*/
List<Lable> lables= allCourses.stream().reduce((list1,list2)->{
list1.retainAll(list2);
return list1;
}).orElse(Collections.emptyList());
group.setLables(lables);
}
return all;
}
---------------------------------------------------------------------------------------------------------
listA.retainAll(listB);
if(listA.size()>0){
System.out.println("这两个集合有相同的交集");
}else{
System.out.println("这两个集合没有相同的交集");
}
标签:sem 添加 相同 操作 jdk 增加 sublist 取出 for
原文地址:https://www.cnblogs.com/xiaoyinger/p/12103722.html