List中的常用方法

list方法整理

List最常用的几种方法

1.增删

添加方法是:.add(e);  获取方法是:.get(index);  
删除方法是:.remove(index); 按照索引删除; .remove(Object o);

 	List<String> person=new ArrayList<>();
    person.add("jackie");   //索引为0  //.add(e)
    person.add("peter");    //索引为1
    person.add("annie");    //索引为2
    person.remove(1);   //.remove(index)
    person.remove("annie");     //.remove(Object o)
2.判断list中是否包含某个元素;

方法:.contains(Object o); 返回true或者false

	List<String> fruits=new ArrayList<>();
    fruits.add("苹果");
    fruits.add("香蕉");
    System.out.println("fruits中是否包含苹果:"+fruits.contains("苹果"));
3.List中根据索引将元素数值改变(替换);

方法:.set(index, element); 和 .add(index, element); 的不同;

	        String a="白龙马", b="沙和尚", c="八戒", d="唐僧", e="悟空";
        List<String> people=new ArrayList<>();
        people.add(a);
        people.add(b);
        people.add(c);
        people.set(0, d);   //.set(index, element);     //将d唐僧放到list中索引为0的位置,替换a白龙马
        people.add(1, e);   //.add(index, element);     //将e悟空放到list中索引为1的位置,原来位置的b沙和尚后移一位

        System.out.println("people = " + people);    //people = [唐僧, 悟空, 沙和尚, 八戒]
4.list中查看(判断)元素的索引;

方法:.indexOf(); 和 lastIndexOf()的不同;

	    List<String> names=new ArrayList<>();
        names.add("刘备");    //索引为0
        names.add("关羽");    //索引为1
        names.add("张飞");    //索引为2
        names.add("刘备");    //索引为3
        names.add("张飞");    //索引为4
        System.out.println(names.indexOf("刘备"));    //0
        System.out.println(names.lastIndexOf("刘备"));   //3
        System.out.println(names.indexOf("张飞"));    //2
        System.out.println(names.lastIndexOf("张飞"));   //4
5.根据元素索引位置进行的判断;
	if (names.indexOf("刘备")==0) {
	    System.out.println("刘备在这里");
	}else if (names.lastIndexOf("刘备")==3) {
	    System.out.println("刘备在那里");
	}else {
	    System.out.println("刘备到底在哪里?");
	}
6.利用list中索引位置重新生成一个新的list(截取集合);

方法:.subList(fromIndex, toIndex);  .size() ; 该方法得到list中的元素数的和

	    List<String> phone=new ArrayList<>();
        phone.add("三星");    //索引为0
        phone.add("苹果");    //索引为1
        phone.add("锤子");    //索引为2
        phone.add("华为");    //索引为3
        phone.add("小米");    //索引为4
        System.out.println("phone = " + phone);   //phone = [三星, 苹果, 锤子, 华为, 小米]
        //生成新list
        phone=phone.subList(1, 4);  //.subList(fromIndex, toIndex)      //利用索引1-4的对象重新生成一个list,但是不包含索引为4的元素,4-1=3
        System.out.println("phone.size() = " + phone.size());   //phone.size() = 3
        System.out.println("phone = " + phone);    //phone = [苹果, 锤子, 华为]
7.对比两个list中的所有元素;

//两个相等对象的equals方法一定为true, 但两个hashcode相等的对象不一定是相等的对象

	//1.
	if (person.equals(fruits)) {
	    System.out.println("两个list中的所有元素相同");
	}else {
	    System.out.println("两个list中的所有元素不一样");
	}
	//2.       
	if (person.hashCode()==fruits.hashCode()) {
	    System.out.println("我们相同");
	}else {
	    System.out.println("我们不一样");
	}
8.判断list是否为空;

方法://空则返回true,非空则返回false

	if (person.isEmpty()) {
	    System.out.println("空的");
	}else {
	    System.out.println("不是空的");
	}
9.返回Iterator集合对象;

方法:.iterator()

    Iterator<String> iterator = phone.iterator();
    while (iterator.hasNext()){
        System.out.println("iterator = " + iterator.next());   //循环
    }
10.将集合转换为字符串;
	String liString=person.toString();
11.将集合转换为数组;
	String[] phones = (String[]) phone.toArray();
    System.out.println("将集合转换为数组:"+phones);
12.集合类型转换;
	List<StringBuffer> lst=new ArrayList<>();
  for(String string:person){
	  lst.add(StringBuffer(string));
	}
13.去重复;
	List<String> lst1=new ArrayList<>();
    lst1.add("aa");
    lst1.add("dd");
    lst1.add("ss");
    lst1.add("aa");
    lst1.add("ss");

           //方法 1.
    for (int i = 0; i <lst1.size()-1; i++) {
        for (int j = lst1.size()-1; j >i; j--) {
            if (lst1.get(j).equals(lst1.get(i))) {
                lst1.remove(j);
            }
        }
    }
    System.out.println(lst1);

           //方法 2.
    List<String> lst2=new ArrayList<>();
    for (String s:lst1) {
        if (Collections.frequency(lst2, s)<1) {
            lst2.add(s);
        }
    }
    System.out.println(lst2);

	//方法3
	List<String> collect = lst1.stream().distinct().collect(Collectors.toList());
    System.out.println(collect);  //[aa, dd, ss]

(jdk8中)list通过里面对象的某个属性分组、分组求和、去重

java8的lambda表达式提供了一些方便list操作的方法,主要涵盖分组、过滤、求和、最值、排序、去重。跟之前的传统写法对比,能少写不少代码。

1、实体类和list集合
	//实体类
	public class User {
	    private int id;
	    private String name;
	    private int age;
	    
	    public User(int id,String name,int age){
	        this.id = id;
	        this.name = name;
	        this.age = age;
	    }
	}

	//创建list
	List<User> users = new ArrayList<>();
	users.add(new User(1,"A",8));
	users.add(new User(2,"A",7));
	users.add(new User(3,"A",6));
	users.add(new User(4,"B",7));
	users.add(new User(5,"B",6));
	users.add(new User(6,"C",6));
	users.add(new User(6,"C",6));
2、list 操作
	/**
	 * 1,跟据某个属性(name)分组
	 **/
	   Map<String,List<User>> collectName = users.stream().collect(Collectors.groupingBy(User::getName));
	   System.out.println(collectName);
	 
	/**
	 * 2,根据某个属性(name)分组,求age的和
	 **/
	   Map<String,Integer> collectNameSumAge = users.stream().collect(Collectors.groupingBy(User::getName,Collectors.summingInt(User::getAge)));
	   System.out.println(collectNameSumAge);
	 
	/**
	 * 3,取出一组对象的某个属性(name)组成一个新集合
	 */
	   List<String> names = users.stream().map(User::getName).collect(Collectors.toList());
	   System.out.println(names);
	 
	/**
	 * 4,list去重复
	 */
	   names = names.stream().distinct().collect(Collectors.toList());
	   System.out.println(names);
	 
	   users = users.stream().distinct().collect(Collectors.toList());
	   System.out.println(users);
	 
	/**
	 * 5,根据某个属性(name)添加条件过滤数据
	 **/
	   users = users.stream().filter(user -> user.getName().equals("A")).collect(Collectors.toList());
	   System.out.println(users);
	 
	/**
	 * 6,判断一组对象里面有没有属性值是某个值
	 */
	   boolean checkName = names.contains("A");
	   System.out.println(checkName);
	 
	   boolean bool = users.stream().anyMatch(user -> "A".equals(user.getName()));
	   System.out.println(bool);

根据List集合中的对象的某一个属性进行排序

		TestA testA1 = new TestA("老张", 3);
		TestA testA2 = new TestA("老李", 1);
		TestA testA3 = new TestA("老王", 2);
		List<TestA> list  = new ArrayList<>();
		list.add(testA1);
		list.add(testA2);
		list.add(testA3);
		System.out.println("排序前--:"+list.toString());
		Collections.sort(list, new Comparator<TestA>() {
            @Override
            public int compare(TestA o1, TestA o2) {
                //升序
                return o1.getAge().compareTo(o2.getAge());
            }
        });
		System.out.println("升序排序后--:"+list.toString());
		Collections.sort(list, new Comparator<TestA>() {
            @Override
            public int compare(TestA o1, TestA o2) {
                //降序
                return o2.getAge().compareTo(o1.getAge());
            }
        });
		System.out.println("降序排序后--:"+list.toString());

两个list取交差集

		// 交集
List<String> listA_01 = new ArrayList<String>(){{
    add("A");
    add("B");
}};
List<String> listB_01 = new ArrayList<String>(){{
    add("B");
    add("C");
}};
listA_01.retainAll(listB_01);
System.out.println(listA_01); // 结果:[B]
System.out.println(listB_01); // 结果:[B, C]

// 差集
List<String> listA_02 = new ArrayList<String>(){{
    add("A");
    add("B");
}};
List<String> listB_02 = new ArrayList<String>(){{
    add("B");
    add("C");
}};
listA_02.removeAll(listB_02);
System.out.println(listA_02); // 结果:[A]
System.out.println(listB_02); // 结果:[B, C]

// 并集
List<String> listA_03 = new ArrayList<String>(){{
    add("A");
    add("B");
}};
List<String> listB_03 = new ArrayList<String>(){{
    add("B");
    add("C");
}};
listA_03.removeAll(listB_03);
listA_03.addAll(listB_03);
System.out.println(listA_03); // 结果:[A, B, C]
System.out.println(listB_03); // 结果:[B, C]

以上来自于网络整理出来的,只是自己用起来方便,没有起到商业用途

  • 12
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值