之前用hibernate的时候,遇到一对多的表结构。比如班级(class),学生(student)时,hibernate都是将student作为一个set集合放在班级对象之中,这是无序的,而我们往往要根据student的id或者分数进行排序。以前采用的办法很笨,遍历set,再借助数组将其按照所要求的顺序加入到list中。这两天发现一种比较好的方法如下:
public class Stude implements Comparable<Object> {
private String id;
private String name;
private String address;
public Stude() {
}
public Stude(String id,String name,String address) {
this.id=id;
this.name=name;
this.address=address;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public int compareTo(Object arg0) {
Stude stu1=(Stude)arg0;
/*根据id排序
* int stu0Id=Integer.parseInt(id);
int stu1Id=Integer.parseInt(stu1.id);
return stu0Id>stu1Id?1:(stu0Id==stu1Id?0:-1);*/
return name.compareTo(stu1.getName());//根据name排序
}
}
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class Test {
public static void main(String[] args) {
Stude stu=new Stude("1","gao","hz");
Stude stu2=new Stude("2","aao","hz");
Stude stu3=new Stude("3","zao","hz");
Set<Stude> studeset=new HashSet<Stude>();
studeset.add(stu);
studeset.add(stu2);
studeset.add(stu3);
List<Stude> stuList=new ArrayList<Stude>();
stuList.addAll(studeset);
Collections.sort(stuList);
for (Stude stude : stuList) {
System.out.println(stude.getName());
}
}
}
分享到:
相关推荐
Java相关 public static void main(String[] args) { User u1=new User(1, "zhangsan");... //放入到Set集合中 Set userset=new HashSet(); userset.add(u1); userset.add(u2); userset.add(u3);
4. 可能还有关于集合转换的示例,如从`List`转为`Set`,或者将`Map`的键或值转化为`List`。 5. 最后,可能包含了集合的遍历策略,如迭代器、增强for循环(foreach)以及流API的使用。 通过这个压缩包的学习,初学...
在实际应用中,我们经常需要进行集合转换,例如从`List`转为`Set`以去重,或者从`List`转为`Map`以建立映射关系。`Collections`工具类提供了丰富的静态方法,用于集合的操作,如排序、查找、复制等。此外,`Stream ...
例如,`Collections.sort()`可以对`List`进行排序,`Collections.reverse()`可以反转`List`,`Collections.fill()`用于填充数组或集合。 总结来说,Java集合框架为开发者提供了强大的工具来处理和操作对象。理解并...
Collection接口下有Set和List子接口,而Map接口用于存储键值对。 2. **集合的特点**: - 集合是对象容器,便于管理大量对象。 - 相比数组,集合的长度可变,适应不同数量的对象存储需求。 3. **集合与数组的区别...
- **排序**:Collections.sort()用于对List进行排序。 - **搜索**:Collections.binarySearch()在排序后的List中查找元素。 - **混编**:Collections.shuffle()随机打乱List中的元素顺序。 - **最大最小值**:...
- `Comparator`接口用于实现外部比较逻辑,可以按照不同的规则对对象进行排序。 #### Collection与Collections的区别 - `Collection`是所有集合的根接口。 - `Collections`是针对集合类的一个工具类,提供了一系列...
- 存储对象的容器,便于对大量数据进行集中管理和操作。 - 集合长度可变,与固定长度的数组相比更灵活。 3. **集合与数组的区别**: - 长度:数组长度固定,集合长度可变。 - 存储类型:数组可存储基本数据...
8. **集合转换**:通过`Collections`工具类,可以实现集合之间的转换,比如将List转为Set,或排序List。 9. **集合的复制**:`Collection`接口的`clone()`方法可以创建一个集合的浅拷贝,而`copy()`方法可以将一个...
- 集合分为三个主要类别:Set(集),List(列表)和Map(映射)。 - 集合框架的优点包括容量自动增长、高性能的数据结构和算法、代码复用性以及降低了API学习成本。 2. **集合与数组的区别**: - 数组长度固定...
- **Collection接口** 是所有集合的父接口,下分为Set接口和List接口。 - **Set接口**:不允许存储重复元素,例如HashSet、TreeSet和LinkedHashSet。 - **List接口**:有序容器,允许重复元素和多个null,如...
- 排序并去重:可以将字符串转为列表,再利用 `set` 去重,然后排序。例如:`s1 = list(set(input()))`,再用 `sort()` 和 `join()` 进行排序和连接。 - 列表排序:可以使用 `list.sort()` 或 `sorted()` 函数,`...
1. **集合转为Stream** 集合可以方便地转换为Stream对象,这通过调用集合的`stream()`或`parallelStream()`方法实现。例如,`List<String> list = ...; Stream<String> stream = list.stream();` 2. **面向流的...
- **List、Map和Set的区别**:List是有序的、可重复的集合,Map是键值对的集合,Set是不包含重复元素的集合。 以上只是Java面试中的一部分常见问题,全面准备还需要深入学习异常处理、IO流、多线程、网络编程、...
列表推导式是一种简洁的创建新列表的方法,基于现有列表或其他可迭代对象进行计算。 ```python squares = [x**2 for x in range(10)] # 创建0到9的平方列表 ``` 6. 字符串(String) 字符串是不可变的字符序列,可以...
39. 转为集合类型:`set()`函数可以将可迭代对象转换为集合。 40. 转为切片对象:`slice(start, stop, step)`创建一个切片对象。 41. 拿来就用的排序函数:`sorted(iterable, key=None, reverse=False)`对可迭代对象...
List集合转为String数组 可以使用`List.toArray()`方法将列表转换为数组。 **示例**: ```java List<String> list = Arrays.asList("a", "b", "c"); String[] array = list.toArray(new String[0]); ``` #### ...
1. 容器:如vector(动态数组)、list(双向链表)、deque(双端队列)、set(集合)、map(映射)等。这些容器用于存储和管理对象,每个都有其特定的访问和操作特性。 2. 迭代器:它们是STL的桥梁,允许程序员像...
- Collections是工具类,提供了对集合的实用操作,如排序、查找、线程安全化等。 7. **List与Map的区别** - List存储有序的、可重复的元素,如ArrayList和LinkedList。 - Map存储键值对,键是唯一的,值可以重复...