精华内容
下载资源
问答
  • 一、第一个问题: 首先我们需要知道什么可以作为集合元素集合对象是一组无序排列***可哈希***的值,集合成员可以做字典中的键。那么可哈希与不可哈希是什么意思呢? 简要的说可哈希的数据类型,即不可变的数据...

    1、列表可以作为集合的元素吗?

    2、集合可以作为列表的元素吗?

    3、元组可以作为集合的元素吗?

    4、集合可以作为元组的元素吗?

    5、字典可以作为集合的元素吗?

    对于上面这五个问题,是不是不太懂呢?接下来我会一一解答。

    一、第一个问题:

    首先我们需要知道什么可以作为集合的元素。集合对象是一组无序排列***可哈希***的值,集合成员可以做字典中的键。那么可哈希与不可哈希是什么意思呢?

    简要的说可哈希的数据类型,即不可变的数据结构(字符串str、元组tuple、对象集objects);同理,不可哈希的数据类型,即可变的数据结构 (集合set,列表list,字典dict)

    >>> set1={[1,2,3,4],4,5,6}c
    Traceback (most recent call last):
      File "<pyshell#0>", line 1, in <module>
        set1={[1,2,3,4],4,5,6}
    TypeError: unhashable type: 'list'
    

    注:unhashable是“不可哈希的”的意思

    可见,报错了。所以列表不可以作为集合的元素.

    二、第二个问题:

    那么列表的元素可以有哪些呢?列表没有长度限制,元素类型可以不同,使用非常灵活。看例子:

    >>> list1=[{1,2,3,4},4,5,6]
    >>> list1
    [{1, 2, 3, 4}, 4, 5, 6]
    >>>
    

    说明集合可以作为列表的元素。

    三、第三个问题:

    在第一个小问中说到,元组(tuple)是不可变的数据结构(可哈希的数据类型),因此,是可以作为集合元素的。

    >>> set2={(1,2,3,4,5),6,7,8}
    >>> set2
    {8, (1, 2, 3, 4, 5), 6, 7}
    >>> 
    

    四、第四个问题:

    元组与列表类似,不同之处在于元组的元素不能修改具体用法我这里不在赘述。

    >>> tuple1=({1,2,3,4,5},89,5)
    >>> tuple1
    ({1, 2, 3, 4, 5}, 89, 5)
    >>> 
    

    所以集合可以作为元组的元素。

    五、第五个问题:

    因为字典是可变的数据结构(不可哈希),所以自然也不能作为集合的元素。

    >>> set1={{'Name': 'Runoob', 'Age': 7, 'Class': 'First'},4,5,6}
    Traceback (most recent call last):
      File "<pyshell#0>", line 1, in <module>
        set1={{'Name': 'Runoob', 'Age': 7, 'Class': 'First'},4,5,6}
    TypeError: unhashable type: 'dict'
    >>> 
    

    附上一张表:

    在这里插入图片描述
    观看顺序:ex:字符串可以作为列表的元素 列表可以作为列表的元素…

    如果有错误的地方,还请指正,大家一起学习。

    展开全文
  • 判断一个元素集合中很容易,只需要遍历这个集合,然后与每个值进行比较,如果有相等的,那么就存在在集合中,然后反过来,就是不存在集合中的,找到它好像挺容易,但是写起代码来好像有点绕,那么,现在就把它写...

    判断一个元素在集合中很容易,只需要遍历这个集合,然后与每个值进行比较,如果有相等的,那么就存在于集合中,反之,就是不存在集合中。找到它好像挺容易,但是写起代码来好像有点绕,那么,现在就把它写出来:

            // 定义两个数据
            List<Integer> aList = new ArrayList<Integer>();
            List<Integer> bList = new ArrayList<Integer>();
            boolean flag;
    
            for (int i = 0; i < 4; i++) {
                aList.add(i); // 首先在集合aList中添加0-3共4个整数
            }
            for (int i = 0; i < 5; i++) {
                bList.add(i); // 在bList中添加0-4的整数,显然b集合中4这个数不存在于a集合的
            }
            // 遍历b集合
            for (int i = 0; i < bList.size(); i++) {
                // 默认为true,如果有相等的就置为false,不移除
                flag = true;
                for (int j = 0; j < aList.size(); j++) {
                    if (bList.get(i) == aList.get(j)) {
                        flag = false; // 相等则说明存在
                    }
                }
                // 如果遍历完,仍没有相等的,则flag仍然为真,该元素移除
                if (flag) {
                    bList.remove(i); // 移除
                }
            }
            // 输出处理后的b集合
            for (Integer integer : bList) {
                System.out.println(integer);
            }

     

    展开全文
  • 有两个集合newCoures和oldCourses,判断这两个集合是否包含相同的对象或元素可以使用retainAll方法:oldCourses.retainAll(newCoures)。 如果存在相同元素,oldCourses中仅保留相同的元素。 如果不存在相同...

    java 取交集方法retainAll

    有两个集合newCoures和oldCourses,判断这两个集合是否包含相同的对象或元素,

    可以使用retainAll方法:oldCourses.retainAll(newCoures)。

    如果存在相同元素,oldCourses中仅保留相同的元素。

    如果不存在相同元素,oldCourse会变为空。

    如果有多个集合oldCourses1、oldCourses2、oldCourses3等,分别与newCourses比较,应该将newCourses统一放在后面,像这样:

    oldCourses1.retainAll(newCoures);

    oldCourses2.retainAll(newCoures);

    oldCourses3.retainAll(newCoures);

     

    public class Test {
    
        public static void main(String[] args) {
    
            List<String> list1 = new ArrayList<String>();
            List<String> list2 = new ArrayList<String>();
            List<String> list3 = new ArrayList<String>();
            for (int i = 0; i < 20; i++) {
                list1.add(i+"");
                if(i%2 == 0) {
                    list2.add(i+"");
                }
                list3.add(i+"@");
            }
            // list1 与 list2 存在相同元素,list1集合只保留list2中存在的元素
            list1.retainAll(list2);
            if(list1.isEmpty()) {
                System.out.println("不包含");
            } else {
                System.out.println("包含");
            }
            System.out.println(list1);
            // list1 与 list3 不存在相同元素,list1集合变为空
            list1.retainAll(list3);
            if(list1.isEmpty()) {
                System.out.println("不包含");
            } else {
                System.out.println("包含");
            }
            System.out.println(list1);
        }
    }

    运行结果如下:

    查看出处:lanxin0802

    ----------------------------java 两个list 交集 并集 差集 去重复并集---------------------------

    List<String> list1 =new ArrayList<String>();
    list1.add("A");
    list1.add("B);

    List<String> list2 =new ArrayList<String>();
    list2.add("B");

    list2.add("C");

     

    1.并集

    list1.addAll(list2);

    运行结果:A, B, B, C

    2.无重复并集
    list2.removeAll(list1);
    list1.addAll(list2);

    运行结果:A, B, C

    3.交集

    list1.retainAll(list2);

    运行结果: B

    4.差集
    list1.removeAll(list2);

    运行结果:A

    注意:如果不理解怎么打印,可以粘贴方法去菜鸟教程,查看详细使用步骤。

    看出处:n_meng

    展开全文
  • 实现集合List中的元素进行排序

    万次阅读 多人点赞 2016-06-14 22:08:32
    Collections对List集合中的数据进行排序 有时候需要对集合中的元素按照一定的规则进行排序,这就需要用到 ...先看一个简单的例子: public static void main(String[] args) { List nums = new ArrayList(); nums.

     

    Collections对List集合中的数据进行排序

    有时候需要对集合中的元素按照一定的规则进行排序,这就需要用到

     

    Java中提供的对集合进行操作的工具类Collections,其中的sort方法

     

    先看一个简单的例子:

     

    public static void main(String[] args) {
    	List<Integer> nums = new ArrayList<Integer>();
    		nums.add(3);
    		nums.add(5);
    		nums.add(1);
    		nums.add(0);
    		System.out.println(nums);
    		Collections.sort(nums);
    		System.out.println(nums);
    }

    输出结果:
    [3, 5, 1, 0]
    [0, 1, 3, 5]

     

    稍微复杂的List里面放一个复杂的对象

     

    package core.java.collection.collections;
    
    public class User implements Comparable<User>{
    	
    	private int score;
    	
    	private int age;
    	
    	public User(int score, int age){
    		super();
    		this.score = score;
    		this.age = age;
    	}
    
    	public int getScore() {
    		return score;
    	}
    
    	public void setScore(int score) {
    		this.score = score;
    	}
    
    	public int getAge() {
    		return age;
    	}
    
    	public void setAge(int age) {
    		this.age = age;
    	}
    
    	@Override
    	public int compareTo(User o) {
    		int i = this.getAge() - o.getAge();//先按照年龄排序
    		if(i == 0){
    			return this.score - o.getScore();//如果年龄相等了再用分数进行排序
    		}
    		return i;
    	}
    	
    }
    
    public static void main(String[] args) {
    		List<User> users = new ArrayList<User>();
    		users.add(new User(78, 26));
    		users.add(new User(67, 23));
    		users.add(new User(34, 56));
    		users.add(new User(55, 23));
    		Collections.sort(users);
    		for(User user : users){
    			System.out.println(user.getScore() + "," + user.getAge());
    		}
    }

    输出结果:
    55,23
    67,23
    78,26
    34,56
    我们会发现sort(List<T>)方法中List中的T必须实现Comparable<T>接口,然后实现
    compareTo()方法,该方法的返回值0代表相等,1表示大于,-1表示小于;为什么
    在简单例子中没有看到实现Comparable接口呢?是因为Integer类其实自己已经实现
    了Comparable接口,Java已经给我们做好了。

    Collections提供的第二种排序方法sort(List<T> list, Comparator<? super T> c)
    先看例子:

    package core.java.collection.collections;
    
    public class Students {
    	
    	private int age;
    	private int score;
    	
    	public Students(int age, int score){
    		super();
    		this.age = age;
    		this.score = score;
    	}
    	
    	public int getAge() {
    		return age;
    	}
    	public void setAge(int age) {
    		this.age = age;
    	}
    	public int getScore() {
    		return score;
    	}
    	public void setScore(int score) {
    		this.score = score;
    	}
    }
    public static void main(String[] args) {
    		List<Students> students = new ArrayList<Students>();
    		students.add(new Students(23, 100));
    		students.add(new Students(27, 98));
    		students.add(new Students(29, 99));
    		students.add(new Students(29, 98));
    		students.add(new Students(22, 89));
    		Collections.sort(students, new Comparator<Students>() {
    
    			@Override
    			public int compare(Students o1, Students o2) {
    				int i = o1.getScore() - o2.getScore();
    				if(i == 0){
    					return o1.getAge() - o2.getAge();
    				}
    				return i;
    			}
    		});
    		for(Students stu : students){
    			System.out.println("score:" + stu.getScore() + ":age" + stu.getAge());
    		}
    }

    输出结果:
    score:89:age22
    score:98:age27
    score:98:age29
    score:99:age29
    score:100:age23

    从上面的例子我们可以看出Students类没有实现Comparable<T>接口,只是在sort()方法
    中多传入一个参数,只不过该参数是一个接口我们需要实现其compare方法。

    以上就是是Java中Colelctions工具类为我们提供的两种集合排序方法。

     

     

    展开全文
  • 这里用到了java8里面collect将Stream转换成值,可以集合元素进行基本的操作,求和操作如下: List<User> userlist = userService.findAll(); Integer sum= userlist .stream().collect(Collectors....
  • 要求:现在想把集合中的某个元素,放到该集合的第一个位置,但是其他元素的顺序不需要管。 方法:需要遍历集合,找到这个元素集合中的位置,然后使用Collections.swap(list,o,i) (O:为元素目前所在位置,i:为...
  • 取两个集合中的相同元素

    千次阅读 2017-10-11 10:39:24
    取两个集合中的相同元素,并将结果转换为字符串code public String GetIntersection(String args1, String args2) { String[] arr1 = args1.split(","); String[] arr2 = args2.split(","); List<String> li
  • 如何在foreach中删除一个集合中的元素,其实很简单,只用一个递归就可以了,例如下面的一个代码判断一个listbox里面的items都是checkbox其中被选中的全部都删除 void removef() { foreach (CheckBox item in lst....
  • 找出两List集合重复的元素

    万次阅读 热门讨论 2019-02-13 20:26:56
    前几天,有个同事问我说怎么找出两个List集合中重复的元素,我当时就说一个集合在外面循环,一个集合在内循环,如果两个元素相等了,就找出来了,我回来一想还是不对,要是数据非常多,这样循环下去,服务器会卡死的...
  • 1简单元素的查找一、找到2个集合中相同和不同的元素本文分享的示例代码实现提取2个集合中相同和不同的元素此处需要使用Collection集合所提供的一个方法:removeAll(Cellection list),removeAll方法用于从列表中移除...
  • Java 查找两个集合中的相同元素和不同元素 假设有这个集合, List<Category> metaCategs , 只要categId 在下面数组中,就从metaCategs中移除 Integer[] removeCategIds =ne...
  • 本文来自:http://www.cnblogs.com/TrueElement/archive/2012/01/13/2321328.html ...如上,我想把num0中不包含于num1的元素都找出来,其正确结果应该是28,32。早上看到原来linq
  • 实现原理就是,获取用户"特别关注"信息的Id集合recommList,循环这个List集合,从用户当前页的信息集合(pageList)中找到"特别关注"的信息,然后用一个临时对象temp接收,从pageList删除这个元素,最后把临时...
  • get(0)是获取集合中的第一个元素

    万次阅读 2018-08-21 11:36:00
    List<People>list=newArrayList<People>(); for(inti=0;i<...//当i=0时,取得是list集合中第一个元素, //当i=1时,取得是list集合中第二个元素, ...... //当i=i时,取得是list...
  • Java中如何删除一个集合中的多个元素

    万次阅读 热门讨论 2007-12-28 14:11:00
    Java中如何删除一个集合中的多个元素 今天我需要从一个java的集合中,根据另一个集合的内容,删除第一个集合中不特定的元素。这看上去非常简单,但却遇到了问题。这就是“Java中如何删除一个集合中的多个元素”的...
  • 题目遇到这么一个面试题,题目是...然后将S0中的元素一个一个的放入S1中,在这个过程中做如下操作: 1. 将第一个元素i1放入集合S1中,即S1{i1},在S1中随机取一个元素的话只能取i1; 2. 再将元素i2放入集合S1中,即S1
  • 【Java集合类】 LinkedHashMap获取第一个元素和最后一个元素 获取LinkedHashMap中的头部元素(最早添加的元素): 时间复杂度O(1) public &amp;amp;lt;K, V&amp;amp;gt; Entry&amp;amp;lt;K, V&...
  • 今天在做一个功能时,需要判断元素是否为最后一项,搜索了一下,这里有一个重点属性, &lt;c:forEach items="${list}" var="var" varStatus="status"&gt; varStatus 属性...
  • 判断一个元素是否在一个集合

    千次阅读 2004-12-22 11:52:00
    出自http://community.csdn.net/Expert/TopicView1.asp?id=3660145QuickKeyBoard() 这样的问题在noi教学中属于基础问题,当你要看一个元素是否在一个集合中时,利用Hash散列表的效率最高。代码我已经写好了,复杂度...
  • c:forEach 遍历集合中的元素,判断是否是最后一个元素       ${chl.section}          ${chl.section}
  • 你有一个误解,hash算法针对的是元素的内容,并不是针对指针,所以指针不变不等于可hash。如果你想深究细节的话,可以看tuple的源码:static Py_hash_ttuplehash(PyTupleObject *v){Py_uhash_t x; /* Unsigned for ...
  • 获取Set集合的第一个元素

    千次阅读 2019-12-05 10:55:59
    HashSet set = new HashSet<>(); set.add(“f”); set.add(“a”); set.add(“b”); set.add(“d”); // 增强for循环进行遍历 for (String string : set) { System.out.println...获取第一个元素 简单粗暴...
  • java Collection集合删除某一元素方法汇总

    千次阅读 多人点赞 2016-09-13 11:22:32
    集合中删除某一元素同样是很常用的操作,对了,面试中也总考察,面试官说要考察你的实际编程的能力,谁知道呢。下面总结了从集合中删除某一元素的几种方法 package test; import java.text.MessageFormat; import...
  • 去掉一个 Vector 集合中重复的元素 Vector newVector = new Vector(); For (int i=0;i { Object obj = vector.get(i); if(!newVector.contains(obj); newVector.add(obj); } 还有一种简单的方式,HashSet ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,061,754
精华内容 424,701
关键字:

一个集合可以是自己的元素吗