您的位置:首页 > 编程语言 > Java开发

javaSE集合与泛型练习题

2019-06-15 17:02 816 查看

1、生成10个1到20之间的不重复的随机数

[code]Set<Integer> set = new HashSet<>();
while(true) {
if(set.size()==10) break;
double d = Math.ceil((Math.random())*20);
set.add((int)d);
}
Iterator<Integer> it = set.iterator();
while(it.hasNext()) {
System.out.println(it.next());
}

2、键盘输入一串字符串,去重后输出

[code]     //方法一:集合
public  void str() {
Scanner sc = new Scanner(System.in);
System.out.println("输入字符串");
String s = sc.nextLine();
Set<Character> set = new HashSet<>();
for(int i=0;i < s.length();i++) {
set.add(s.charAt(i));
}

Iterator<Character> it = set.iterator();
while(it.hasNext()) {
System.out.print(it.next());
}
}
[code]// 方法二:字符串自带方法操作
public  void str2() {
Scanner sc = new Scanner(System.in);
System.out.println("输入字符串");
String s = sc.nextLine();
String s1="";
for(int i=0;i < s.length();i++) {
//			if(!s1.contains(String.valueOf(s.charAt(i)))) {
//				s1+=s.charAt(i);
//			}
//或者
if(s1.indexOf(s.charAt(i))==-1) {
s1+=s.charAt(i);
}
}
System.out.println(s1);
}

3、把List<String>集合中的重复元素去除(不可用循环)

[code]public void unRepeat() {
List<String> list = new ArrayList<>();
list.add("a");
list.add("a");
list.add("a");
list.add("a");
LinkedHashSet<String> set = new LinkedHashSet<>();//插入操作比较多
set.addAll(list);
list.clear();
list.addAll(set);
System.out.println(list);
}

    4、在一个列表中存储以下元素:apple,grape,banana,pear 
    • 3.1 返回集合中的最大的和最小的元素 (比较长短)
    • 3.2 将集合进行排序,并将排序后的结果打印在控制台上 

[code]public void sort() {
List<String> list = new ArrayList<>();
list.add("apple");
list.add("grape");
list.add("banana");
list.add("pear");

Collections.sort(list);//按字符顺序
Collections.sort(list, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o2.length()-o1.length();//按字符串长短排序
}
});
System.out.println("最大:"+list.get(0));
System.out.println("最小:"+list.get(list.size()-1));
System.out.println(list);
}

5、从控制台输入若干个单词(输入回车结束)放入集合中,将这些单词排序后(忽略大小写)打印出来

[code]public void sort1() {
System.out.println("请输入多个单词,单词之间以英文“,”隔开");
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();

String[] arr = s.split(",");
List<String> list = Arrays.asList(arr);
Collections.sort(list,new Comparator<String>() {//按字符大小排序
@Override
public int compare(String o1, String o2) {
return o1.trim().compareToIgnoreCase(o2.trim());
}
});

System.out.println(list);

//		list.sort(new Comparator<String>() {//按字符串长短排序
//			@Override
//			public int compare(String o1, String o2) {
//				return o1.length() - o2.length();
//			}
//		});
sc.close();
}

6、 500个人围城一个圈,从1开始报数,每数到3的倍数的人离开圈子,循环往复直到最后圈中只剩下一人为止,求剩下的人原来在圈中的位置(类似  约瑟夫环) (泛型版本,前面数组练习题中有数组版本的实现例子)     结果:435

[code]public void joseph() {
//因为插入、删除操作较多,选择LinkedList
LinkedList<Integer> list = new LinkedList<>();
for(int i=0;i<500;i++) {//假设共500人
list.add(i);
}
int i=0;//下标
int count=0;
while(list.size()>1) {
count++;
if(count%3==0) {
list.remove(i);
i--;
}
i++;
if(i==list.size()) {
i=0;
}
}
System.out.println(list);
Collections.reverse(list);
}

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: