1、生成10个1到20之间的不重复的随机数
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、键盘输入一串字符串,去重后输出
//方法一:集合
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());
}
}
// 方法二:字符串自带方法操作
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>集合中的重复元素去除(不可用循环)
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 将集合进行排序,并将排序后的结果打印在控制台上
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、从控制台输入若干个单词(输入回车结束)放入集合中,将这些单词排序后(忽略大小写)打印出来
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
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);
}