具有组名的Java打印阵列列表组
我只是一个初学者,自己学习Java! 我只有一个用户对象的arraylist:具有组名的Java打印阵列列表组,java,android,for-loop,arraylist,Java,Android,For Loop,Arraylist,我只是一个初学者,自己学习Java! 我只有一个用户对象的arraylist: class Users{ public userName; public userNumber; } 然后,我创建一个模型,如下所示: ArrayList<Users> model=new ArrayList<Users>(); 我要做的是以这种方式打印模型,该方式应显示组名为的类似分组数据,如下所示: for(int i=0;i:i<users.size;i++
class Users{
public userName;
public userNumber;
}
然后,我创建一个模型,如下所示:
ArrayList<Users> model=new ArrayList<Users>();
我要做的是以这种方式打印模型,该方式应显示组名为的类似分组数据,如下所示:
for(int i=0;i:i<users.size;i++){
System.out.printlin("users:::"+users.get(i).userNumber);
}
因此,我想对数据进行分组,然后以分组格式打印数据,并使用每个组名
我怎样才能做到这一点,我只是在自学Java。提前感谢一种快速简便的方法是使用
HashMap
。散列映射是键值集合,在本例中,您将创建一个HashMap
,它将username
存储为键,将userNumber
存储为值列表(因为您有多个值)
然后您的代码将更改如下:
用户名
,请将用户名
添加到其中用户名
不存在,则将其添加到hashmap中,并将用户名
作为其列表的第一个元素最后,您将在hashmap上迭代,打印它拥有的键和值。使用Java Streams尝试下面的方法
//group by user name
Map<String, Set<String>> map =
model.stream().collect(
Collectors.groupingBy(Users::getUserName,
Collectors.mapping(Users::getUserNumber, Collectors.toSet())
)
);
System.out.println(map);
//按用户名分组
地图=
model.stream().collect(
Collectors.groupingBy(用户::getUserName,
Collectors.mapping(Users::getUserNumber,Collectors.toSet())
)
);
系统输出打印项次(map);
确保在Users类中实现getter方法getUserName()、getUserNumber()。这里我假设userName和userNumber都是字符串类型的数据
public class User {
private String userName;
public String getUserName() {
return userName;
}
public User(String userName, String userNumber) {
this.userName = userName;
this.userNumber = userNumber;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserNumber() {
return userNumber;
}
public void setUserNumber(String userPassword) {
this.userNumber = userPassword;
}
private String userNumber;
}
主类
import java.util.ArrayList;
导入java.util.HashMap;
导入java.util.List;
公共类方法{
私有静态哈希映射;
私有静态ArrayList用户列表;
私有静态ArrayList user2list;
公共静态void main(字符串…参数){
maps=新的HashMap();
user1list=newarraylist();
user2list=newarraylist();
用户user1=新用户(“Ram”、“1234”);
用户user2=新用户(“Alish”,“5678”);
用户user3=新用户(“Ram”、“91011”);
用户user4=新用户(“Alish”,“121314”);
user1list.add(user1);
user1list.add(user3);
user2list.add(user2);
user2list.add(user4);
maps.put(user1,user1list);
put(user2,user2list);
///用户一列表
for(用户userone:maps.get(user1)){
System.out.println(“userone名称::”+userone.getUserName());
System.out.println(“用户一号::”+userone.getUserNumber());
}
System.out.println();
//用户拖曳列表
for(user2:maps.get(user2)){
System.out.println(“用户名:::”+usertwo.getUserName());
System.out.println(“用户二号::”+usertwo.getUserNumber());
}
}
}
请尝试下面的代码-
public class Users {
public String userName;
public String userNumber;
public Users(String userName, String userNumber) {
this.userName = userName;
this.userNumber = userNumber;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserNumber() {
return userNumber;
}
public void setUserNumber(String userNumber) {
this.userNumber = userNumber;
}
public static void main(String ar[]) {
ArrayList<Users> model = new ArrayList<Users>();
model.add(new Users("abc", "123"));
model.add(new Users("def", "888"));
model.add(new Users("abc", "246"));
model.add(new Users("def", "999"));
model.add(new Users("abc", "456"));
Map<String, Set<String>> map = model.stream().collect(Collectors.groupingBy(Users::getUserName,
Collectors.mapping(Users::getUserNumber, Collectors.toSet())));
for (Map.Entry<String, Set<String>> entry : map.entrySet()) {
Set set = entry.getValue();
Iterator value = set.iterator();
while (value.hasNext()) {
System.out.println(entry.getKey() + " : " + value.next());
}
}
}
公共类用户{
公共字符串用户名;
公共字符串用户号;
公共用户(字符串用户名、字符串用户名){
this.userName=用户名;
this.userNumber=userNumber;
}
公共字符串getUserName(){
返回用户名;
}
public void setUserName(字符串用户名){
this.userName=用户名;
}
公共字符串getUserNumber(){
返回用户号;
}
public void setUserNumber(字符串userNumber){
this.userNumber=userNumber;
}
公共静态void main(字符串ar[]{
ArrayList模型=新的ArrayList();
新增(新用户(“abc”、“123”));
添加(新用户(“def”、“888”);
新增(新用户(“abc”、“246”);
添加(新用户(“def”、“999”);
新增(新用户(“abc”、“456”));
Map Map=model.stream().collect(Collectors.groupingBy(Users::getUserName,
Collectors.mapping(Users::getUserNumber,Collectors.toSet());
对于(Map.Entry:Map.entrySet()){
Set=entry.getValue();
迭代器值=set.Iterator();
while(value.hasNext()){
System.out.println(entry.getKey()+“:”+value.next());
}
}
}
}您需要使用
java.util.Map
,此数据结构保存键值对。您的密钥将是userName,值将是userNumber列表。然后,您可以有一个循环来打印来自映射的条目。您还可以阅读java8流api。最好的是:)如果您只想打印数据,那么您可以使用oveeride方法在用户类中字符串。链接()
public class User {
private String userName;
public String getUserName() {
return userName;
}
public User(String userName, String userNumber) {
this.userName = userName;
this.userNumber = userNumber;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserNumber() {
return userNumber;
}
public void setUserNumber(String userPassword) {
this.userNumber = userPassword;
}
private String userNumber;
}
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
public class MainMethod {
private static HashMap<User, ArrayList<User>> maps;
private static ArrayList<User> user1list;
private static ArrayList<User> user2list;
public static void main(String...args) {
maps = new HashMap<>();
user1list = new ArrayList<>();
user2list = new ArrayList<>();
User user1 = new User("Ram", "1234");
User user2 = new User("Alish", "5678");
User user3 = new User("Ram", "91011");
User user4 = new User("Alish", "121314");
user1list.add(user1);
user1list.add(user3);
user2list.add(user2);
user2list.add(user4);
maps.put(user1, user1list );
maps.put(user2, user2list);
/// User one lists
for ( User userone: maps.get(user1)) {
System.out.println("userone Name:::"+userone.getUserName());
System.out.println("User one Number:::"+userone.getUserNumber());
}
System.out.println();
// USer tow list
for (User usertwo: maps.get(user2)) {
System.out.println("User two Name:::" +usertwo.getUserName());
System.out.println("User two Number :::" +usertwo.getUserNumber());
}
}
}
public class Users {
public String userName;
public String userNumber;
public Users(String userName, String userNumber) {
this.userName = userName;
this.userNumber = userNumber;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserNumber() {
return userNumber;
}
public void setUserNumber(String userNumber) {
this.userNumber = userNumber;
}
public static void main(String ar[]) {
ArrayList<Users> model = new ArrayList<Users>();
model.add(new Users("abc", "123"));
model.add(new Users("def", "888"));
model.add(new Users("abc", "246"));
model.add(new Users("def", "999"));
model.add(new Users("abc", "456"));
Map<String, Set<String>> map = model.stream().collect(Collectors.groupingBy(Users::getUserName,
Collectors.mapping(Users::getUserNumber, Collectors.toSet())));
for (Map.Entry<String, Set<String>> entry : map.entrySet()) {
Set set = entry.getValue();
Iterator value = set.iterator();
while (value.hasNext()) {
System.out.println(entry.getKey() + " : " + value.next());
}
}
}