「java不重复的集合」java可重复集合
本篇文章给大家谈谈java不重复的集合,以及java可重复集合对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、Java哪些集合的 元素不能重复
- 2、java判断集合是否重复用什么符号关键字
- 3、java 中如何 找出两个集合中的不重复的元素
- 4、java 集合set类中是如何实现数据不能重复的?
- 5、很急 java中有没有去掉重复又是有序的集合或数据 最好有列子 除了set
- 6、java set集合不可重复的意思
Java哪些集合的 元素不能重复
SetT 集合不允许重复的。
SetT为接口,常用的实现类是HashSetT
举个例子:
SetInteger testSet = new HashSetInteger();
testSet.add(1);
testSet.add(2);
testSet.add(3);
testSet.add(1);
打印这个testSet 你只能获得3个元素 1 2 3,用size()方法来获取这个集合的大小时返回也是3。
java判断集合是否重复用什么符号关键字
方法1:
利用Set集合来实现
将字符串中的每个字符依次存入Set集合中,Set集合会自动剔除重复元素。
判断Set集合的元素个数是否等于字符串的长度,若相等,则字符串中没有重复的字符。否则,字符串中存在重复的字符。
Code:
public static boolean isunique(String s) {
Set set = new HashSet();
char[] chars = s.toCharArray();
for(char c:chars) {
set.add(c);
}
return (set.size()==s.length());
}
方法2:
将字符串转化为字符数组。
对于每个字符,从字符串的开头检索,得到索引号index1
从字符串的末尾开始索引,得到索引号index2
判断index1是否等于index2
若相等,则字符串中不含重复字符。否则,字符串中含有重复字符。
Code:
public static boolean isunique(String s) {
int index1,index2;
char[] chars = s.toCharArray();
for(char c:chars) {
index1 = s.indexOf(c);
index2 = s.lastIndexOf(c);
if(index1 != index2) return false;
}
return true;
}
java 中如何 找出两个集合中的不重复的元素
循环第一个集合,在第二个集合中查找,就可以将第一个集合的数据分成,两类,
1类是再第二个集合有的,一类是在第二个集合中没有的。
这样,才把第二个集合中有的作为一个新集合,循环第二个集合的时候只需要对比就行了,去掉第二个集合中包含新集合里面的数据,剩下的,加上第一个集合就等于是不重复的,
重复的也就是新集合,这样两类都算是找出来了。只用循环查找和对比就可以了。没有技术难度。
java 集合set类中是如何实现数据不能重复的?
Set 有个 add 方法是将元素添加到 Set 中,以 HashSet 为例。
public boolean add(E e) {
return map.put(e, PRESENT)==null;
}
可以看到,HashSet 底层的数据结构是一个HashMapE,Object ,将 e 作为 HashMap 的 key 保存的。而 HashMap 的底层数据结构是 HashTable ,根据 HashMap 的 key 的HashCode 去 HashTable (具体实现是数组+链表) 里找到元素的位置。如果同一个对象(使用equals 来比较两个对象是否相同,具体是比较对象的 hashCode() 是否相同) 往Set 里放,最终放到 HashTable 的位置是相同的。具体判断Set 是否包含某个对象,调用的是Set的contains(Object o) 方法,它内部也是通过计算 o 的hashCode 去查找该元素是否存在的。
如果题主是新学习Java的同学,建议重点学习一下常用集合的数据结构,对于掌握Java这门语言非常有帮助。
很急 java中有没有去掉重复又是有序的集合或数据 最好有列子 除了set
Object object = new Object();
List list =new ArrayList();
list.add(object);
list.add(object);
Set set = new HashSet();
set.addAll(list);
List list2 =new ArrayList();
list2.addAll(set);
System.out.println(list2.size());
具体思路就是 把list 加到HashSet中 ,我们知道 Set是不能重复的...
并且注意
你如果有一个对象:
并且有2个字段
你有可能认为2个字段相等的话,这个对象就是重复的...这样的话,你应该去实现equest方法和hashCode方法里面去实现关于这2个字段判断...这个是hash表的特点
如果想要排序list,那么你就要重新写一个排序类去实现Comparator接口
//一个POJO例子
class User {
String name;
String age;
public User(String name,String age){
this.name=name;
this.age=age;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
//具体的比较类,实现Comparator接口
import java.util.Comparator;
import java.util.List;
import java.util.ArrayList;
import java.util.Collections;
public class ComparatorUser implements Comparator{
public int compare(Object arg0, Object arg1) {
User user0=(User)arg0;
User user1=(User)arg1;
//首先比较年龄,如果年龄相同,则比较名字
int flag=user0.getAge().compareTo(user1.getAge());
if(flag==0){
return user0.getName().compareTo(user1.getName());
}else{
return flag;
}
}
}
//测试类
public class SortTest {
public static void main(String[] args){
List userlist=new ArrayList();
userlist.add(new User("dd","4"));
userlist.add(new User("aa","1"));
userlist.add(new User("ee","5"));
userlist.add(new User("bb","2"));
userlist.add(new User("ff","5"));
userlist.add(new User("cc","3"));
userlist.add(new User("gg","6"));
ComparatorUser comparator=new ComparatorUser();
Collections.sort(userlist, comparator);
for (int i=0;iuserlist.size();i++){
User user_temp=(User)userlist.get(i);
System.out.println(user_temp.getAge()+","+user_temp.getName());
}
}
}
上面的这个例子是从网上copy下来的...OK..就这些..
java set集合不可重复的意思
set 的equals是内容相等.
如果没有重写过的equals就是HashCode值相等,可以理解为地址.
重写过的,就要看对应的equals方法的说明了,根据实际用途来做,一般都是跟内容有关
关于java不重复的集合和java可重复集合的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-12-21,除非注明,否则均为
原创文章,转载请注明出处。