黑马程序员技术交流社区
标题:
泛型怎么用啊? 到这不会写了,排序的。
[打印本页]
作者:
墓____夜
时间:
2014-5-29 23:32
标题:
泛型怎么用啊? 到这不会写了,排序的。
package Day18;
import java.util.ArrayList;
import java.util.List;
public class Demo7 {
public static void main(String[] args) {
List<String> list1 = new ArrayList<>();
list1.add("b");
list1.add("f");
list1.add("e");
list1.add("c");
list1.add("a");
list1.add("d");
}
public static<T> void paixu(List<T> list){
for (int i = 0; i < list.size(); i++) {
}
}
}
作者:
shi980088
时间:
2014-5-29 23:49
给你点提示,我是把他转换成字符类型然后进行的处理list.get(i).charAt(0);
作者:
饥渴ing
时间:
2014-5-30 00:13
public static void paixu(List<String> list) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < list.size(); i++) {
for (int j = i; j < list.size(); j++) {
if ((list.get(i)).compareTo(list.get(j)) > 0) {
sb.delete(0, sb.length());
sb.append(list.get(i));
list.set(i, list.get(j));
list.set(j, sb.toString());
}
}
}
}
这样可以不!
作者:
Teale
时间:
2014-5-30 00:56
来个简单的。 Set集合是有唯一的,直接可以把List集合转为Set集合就可以排序了(遍历出来再存进去),我开始用了HashSet来存,结果没变,我觉得是没有重写hashCode()和Equels方法所以不带有排序性。 然而TreeSet是树杈结构,本身自带排序(HashSet本身利用hash值来存储,值只能判断是否重复,如果要加上排序得在初始化时传入 Comparator 比较麻烦) ,而且TreeSet必须存储带有顺序的元素,String本身是带有排序元素的,因为自身有CompareTo方法,可以看下API。 代码如下:
public static Set<String> sort(List<String> list){
Set<String> set=new TreeSet<String>();
for(String str:list){
set.add(str);
}
return set;
}
另外要注意的是 集合不是数组,你那个for遍历只能用于数组,你如果list[i]编译器肯定不会通过的。下面是主函数:
List<String> list=new ArrayList();
list.add("d");
list.add("c");
list.add("b");
list.add("a");
Set<String> set=sort(list);
Iterator it=set.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
如果你一定要用for循环,可以用高级For,比如for(String str:list) or for(String str :set)
希望可以帮到你
作者:
何堂红
时间:
2014-5-30 02:04
我也被这个题难住了,头都大了
作者:
饥渴ing
时间:
2014-5-30 02:51
Teale 发表于 2014-5-30 00:56
来个简单的。 Set集合是有唯一的,直接可以把List集合转为Set集合就可以排序了(遍历出来再存进去),我开 ...
Collections.sort()更简单....
作者:
Dark_Horse
时间:
2014-5-30 09:07
集合转换为数组在排序,可以定义一个方法如
public static void sort(List<Integer> li){
//1集合转换为数组
//2排序就可以
}
作者:
饥渴ing
时间:
2014-5-30 19:39
本帖最后由 饥渴ing 于 2014-5-30 19:44 编辑
public static <T extends Comparable<? super T>> void paixu(List<T> list) {
T temp;//临时存放元素内容
for (int i = 0; i < list.size(); i++) {
for (int j = i; j < list.size(); j++) {
if ((list.get(i)).compareTo(list.get(j)) > 0) {//两个元素进行比较.
//交换
temp = list.get(i);
list.set(i, list.get(j));
list.set(j, temp);
}
}
}
}
修改了下这样就可以了
T必须要实现Comparable这个接口,因为元素要具备比较性才能进行排序
然后使用冒泡排序依次进行比较.交换位置
作者:
liang090214
时间:
2014-5-30 22:31
学习下。。。
作者:
茂子
时间:
2014-5-31 23:23
学习一下下。。。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2